Answers:
好的,因此,如果您不放弃ls
,那么至少要设法摆脱对所有内容都使用反引号的习惯,尤其xargs
是在更合适的情况下:
ls -rtd ~/Downloads/* | tail -n2 | xargs -I{} mv {} .
xargs
我的兴趣远胜于后退。但是,出于技术原因,是否有理由偏向于使用此顺序的管道而xargs
不是使用反引号,或者这仅是口味问题?
ls
,可以利用xargs -0
ls
不鼓励进行解析:mywiki.wooledge.org/ParsingLs
您可以find
在那里使用GNU :
mv $(find ~/Download -mindepth 1 -maxdepth 1 -printf '%Ts %p\n' | sort -n | cut -d ' ' -f2- | tail -n 2) .
该find -printf
选项:
%Ts
将时间显示为时代%p
文件路径看到 man find | less +/'^ *-printf'
编辑
如果您需要处理文件名中的空格,我建议使用另一种解决方案:
find -maxdepth 1 -printf '%Ts %p\n' |
sort -n |
cut -d ' ' -f2- |
tail -n 2 |
xargs -i% mv % .
find -printf
选项的说明
-f2-
而不是-f2
作为选择cut
?第二个破折号是做什么的?
man cut
如果有多个列,它将一直打印到最后。
使用ls -rt ~/Downloads/*
代替ls -rt ~/Downloads/
。在ls -rt ~/Downloads/*
参数字符串中,字符串首先由外壳扩展(这称为文件名globlob)。因此,您将获得一个路径列表作为ls -rt
命令的参数,然后以您指定的方式对命令进行排序ls
。相反,该命令ls -rt ~/Downloads/
读取directory的内容~/Downloads/
。这是没有目录路径的文件列表。
find
代替。