如何管道"查找"(在Linux中)的结果要移动到另一个目录?这就是我到目前为止所拥有的.
find ./ -name '*article*' | mv ../backup
Run Code Online (Sandbox Code Playgroud)
但它还没有正确(我得到一个错误丢失文件参数,因为我没有指定文件,因为我试图从管道中获取它)
Ami*_*mit 56
find ./ -name '*article*' -exec mv {} ../backup \;
Run Code Online (Sandbox Code Playgroud)
要么
find ./ -name '*article*' | xargs -I '{}' mv {} ../backup
Run Code Online (Sandbox Code Playgroud)
tri*_*eee 19
xargs
通常用于此,并mv
有一个-t
选项来促进这一点.
find ./ -name '*article*' | xargs mv -t ../backup
Run Code Online (Sandbox Code Playgroud)
如果您的find
支持-exec ... \+
可以等同
find ./ -name '*article*' -exec mv -t ../backup {} \+
Run Code Online (Sandbox Code Playgroud)
该-t
选项可能是GNU扩展.当然可以推出自己的,也许是类似的东西
find ./ -name '*article*' -exec sh -c 'mv "$@" "$0"' ../backup {} \+
Run Code Online (Sandbox Code Playgroud)
我们无耻地滥用了最后的第一个参数coreutils
作为"脚本名称"参数的方便事实,sh -c 'commands'
以便我们甚至不需要$0
它.
归档时间: |
|
查看次数: |
36166 次 |
最近记录: |