Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何使用Mac OS X终端将目录中最旧或最新的文件移动到另一个目录_Macos_Bash_Command Line - Fatal编程技术网

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

Macos 如何使用Mac OS X终端将目录中最旧或最新的文件移动到另一个目录,macos,bash,command-line,Macos,Bash,Command Line,我试图在Mac OSX 10.6终端上使用以下命令,但它不起作用。知道我可能做错了什么吗 这些工作 列出最近的文件: ls -l -t | head -2 $ ls -gt | tail -1 列出最早的文件: ls -l -t | head -2 $ ls -gt | tail -1 但是,当我尝试移动最旧的文件时,此操作无效: mv `ls -tr |tail -1` newdirname 任何想法或建议都将不胜感激!!请温柔点,我还不太擅长这个命令行;) 谢谢 杰斯 附言 当我输

我试图在Mac OSX 10.6终端上使用以下命令,但它不起作用。知道我可能做错了什么吗

这些工作

列出最近的文件:

ls -l -t | head -2
$ ls -gt | tail -1
列出最早的文件:

ls -l -t | head -2
$ ls -gt | tail -1
但是,当我尝试移动最旧的文件时,此操作无效:

mv `ls -tr |tail -1` newdirname
任何想法或建议都将不胜感激!!请温柔点,我还不太擅长这个命令行;)

谢谢

杰斯

附言

当我输入以下内容时:

mv `ls -tr |tail -1` DropBox

我得到以下信息:
mv:将Test.txt重命名为DropBox/Test.txt:没有这样的文件或目录

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

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

文件名中空格的报价帮助,但我认为我的答案并不优雅,还有更优雅的解决方案吗?

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

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

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

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

将参数
-1
添加到
ls
将解决此问题。osx'ls似乎没有正确检查它是否打印到终端或管道。

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

mv `ls -t |tail -1` newdirname


正在使用我的Ubuntu的bash。

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

mv `ls -t |tail -1` newdirname


在我的Ubuntu的bash上工作。

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

mv$(find/home/balaji/work/-type f-printf'%T+%p\n'| sort | head-1)/home/balaji/regular|archive

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

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

mv$(find/home/balaji/work/-type f-printf'%T+%p\n'| sort | head-1)/home/balaji/regular|archive

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

启动命令时会发生什么?看起来很好,可以在linux上运行。西蒙,我添加了上面的输出。也可以在雪豹上运行。有没有要发布的错误消息?启动命令时会发生什么?看起来很好,可以在linux上运行。西蒙,我添加了上面的输出。也可以在雪豹上运行。是否要发布任何错误消息?如果文件名包含空格,则此操作无效。您应该更改命令行以引用子shell执行结果。请告知我们修改后的命令不太幸运。如果文件名包含空格,则此命令将不起作用。您应该更改命令行以引用子shell执行结果。请告知我们修改后的命令