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代替。