2013-05-27 55 views
1

我可以使用以下命令重命名最新创建的文件的目录,在linux

ls -Art | tail -n 1 

得到一个目录中的最新修改/创建的文件,我想通过重命名上面的命令返回的文件。我怎么能这样做?

我也尝试过一些非常基本的这样

ls -rt | xargs | awk {'print $1'} | xargs cat >> newfile.txt 

有时它的工作原理,但大多只是写一个空文件

+0

'ls -rt | xargs | awk {'print $ 1'} | xargs cat >> newfile.txt'这是我见过的最奇特的线之一...... xargs和awk在那里做了什么?为什么'ls -At |头-n 1 | xargs“-I {}”mv“{}”newfile.txt“不起作用? – Bobby

+0

@Bobby可以工作。我是shell脚本编程的新手,我没有使用xargs,而awk是它在本文中应该使用的方式。 – Vidhuran

回答

2

使用find最近确定修改文件而不是解析ls

find /path/to/search -type f -printf ‘%TY-%Tm-%Td %TT %p\n’ | sort -r | head -n1 | xargs -I '{}' mv '{}' newfile.txt 
+0

这可以工作,但find命令在ls上有什么优势吗? – Vidhuran

+0

@Vidhuran是的。阅读这篇文章(http://mywiki.wooledge.org/ParsingLs) –

+0

谢谢,如果使用find over ls更好,我会接受你的答案。 – Vidhuran

3

尝试以下操作:

ls -ltr | awk '{ field = $NF }; END{ print field }' | xargs -I '{}' mv '{}' newfile.txt 
+0

谢谢,它的工作原理。 – Vidhuran

+0

@devnull这将打破文件名称与空格。 –

+0

@Jaypal哦,是的,不仅文件名带空格,它也会打破符号链接。不是吗?谁在世界上想要用'ls'来做这种事情? – devnull

相关问题