我正在尝试在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
答案 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表示仅一个文件,即最早的文件。