用xargs移动文件

时间:2017-03-17 09:58:05

标签: bash shell

我想将ls的输出管道输入head并将其输入mv。

我在终端上使用了以下命令,但它无法正常工作。

ls -t Downloads/ | head -7 | xargs -i mv {} ~/cso/

请纠正错误。提前致谢!

2 个答案:

答案 0 :(得分:3)

有充分证据表明不建议解析ls输出。您可以使用find + sort + cut + head + xargs管道来使用这种安全方法:

find . -maxdepth 1 -type f -printf '%T@\t%p\0' |
sort -z -rnk1 |
cut -z -f2 |
head -z -n 7 |
xargs -0 -I {} mv {} ~/cso/

答案 1 :(得分:1)

使用-I就像这里:

ls -t Downloads/* | head -7 | xargs -I '{}' mv '{}' ~/cso/