如何使用Mac OS X终端将目录中最旧或最新的文件移动到另一个文件

时间:2011-01-07 09:55:41

标签: macos bash command-line

我正在尝试在Mac OSX 10.6终端上使用以下命令,但它不起作用。任何想法我可能做错了什么?

这些工作......

列出最新文件:

ls -l -t | head -2

列出最旧的文件:

$ ls -gt | tail -1

但是当我尝试移动最旧的文件时,使用它不起作用:

mv `ls -tr |tail -1` newdirname

任何想法或提示都表示赞赏!!请温柔的家伙,我还不太擅长这个命令行的东西; )

谢谢,

尔杰斯

聚苯乙烯。

当我输入时:

mv `ls -tr |tail -1` DropBox

我明白了:mv: rename Test.txt to DropBox/Test.txt: No such file or directory

4 个答案:

答案 0 :(得分:4)

假设您要移动的文件位于当前目录中:

mv "`ls -1t | tail -1`" dir_to_move_to

文件名中的空格的引用帮助,但我不认为我的答案是优雅的,更优雅的解决方案?

答案 1 :(得分:1)

将参数-1添加到ls会解决这个问题。好像osx'ls没有正确检查是否打印到终端或管道..

答案 2 :(得分:0)

您正在移动最新的文件。尝试

mv `ls -t |tail -1` newdirname

mv `ls -tr |head -1` newdirname

使用我的Ubuntu bash。

答案 3 :(得分:0)

我找到了这个问题的另一个答案。最好使用 find 命令而不是 ls 命令。这将有助于查找最早的文件,并且可以使用 mv 命令移动到另一个目录。

dataGrid

mv $(find /home/balaji/work/ -type f -printf '%T+ %p\n' | sort | head -1) /home/balaji/regular_archieve –在目录层次结构中搜索文件。 find –搜索位置。 /home/balaji/work/ –目标位置。 /home/balaji/regular_archieve/ –仅搜索常规文件。 type -f –打印文件的上次修改日期和时间,以+符号分隔。 (例如2015-07-22 + 13:42:40.0000000000)。此处,%p表示文件名。 \ n表示新行。 -printf ‘%T+ %p\n’ – sort命令对输出进行排序,并将输出发送到head命令以显示最早的文件。在这里,-n 1表示仅一个文件,即最早的文件。

相关问题