想象你的 Terminal 已经在你的工作目录了,然后你从浏览器下载了一个东西,它自动放在了 ~/Downloads
目录下
好吧,我太笨了,根本不知道刚刚下载的文件叫什么乱七八糟的名字,也不想 cd 过去找它
这时候我会用下面这个命令把它直接挪过来,不管它叫什么名字(当然,你可以把它变成一个 alias, 方便使用)
ls -t ~/Downloads | head -n 1 | xargs -I {} cp ~/Downloads/{} .
下面我来逐一解释命令的每一部分:
-
ls -t ~/Downloads
: 这个命令会列出~/Downloads
目录中的所有文件,并根据修改时间排序,最新修改的文件排在最前面。 -
|
: 这个符号被称为管道符,它用来将一个命令的输出作为另一个命令的输入。 -
head -n 1
: 这个命令会取前一个文件名(因为它们是最新修改的文件)。 -
|
: 再次使用管道符,将head
命令的输出传递给xargs
。 -
xargs -I {} cp ~/Downloads/{} .
: 这里xargs
接受head
命令的输出(即文件名)作为输入,并对每个输入执行cp
命令。-I {}
选项告诉xargs
将{}
作为替换字符串,命令中的每次出现{}
都会被替换为输入行。所以cp ~/Downloads/{}
. 会被替换为cp ~/Downloads/file1 .
,其中file1
是从~/Downloads
目录中选出的最新修改的文件。