ohb*_*sme 3 linux bash find xargs exec
我正在 CentOS 服务器上工作,我必须四处移动并将数百万个文件整理在一起。我已经尝试了许多类似下面的内容,但所有这些都因参数列表太长错误而失败。
命令:
find ./ -iname out.* -type f -exec mv {} /home/user/trash
find ./paramsFile.* -exec cat > parameters.txt
Run Code Online (Sandbox Code Playgroud)
错误:
-bash: /usr/bin/find: Argument list too long
-bash: /bin/cat: Argument list too long
Run Code Online (Sandbox Code Playgroud)
或者
echo ./out.* | xargs -I '{}' mv /home/user/trash
(echo ./paramsFile.* | xargs cat) > parameters.txt
Run Code Online (Sandbox Code Playgroud)
错误:
xargs: argument line too long
xargs: argument line too long
Run Code Online (Sandbox Code Playgroud)
第二个命令也从未完成。我听说过一些关于通配符的事情,但我不确定我是否完全理解它。欢迎任何提示或建议!
你有多个错误。你应该避免*通配符。您必须放在{}引号之间(为了文件名安全),并且必须-exec以\;.
find ./ -iname out.\* -type f -exec mv "{}" /home/user/trash \;
find -name ./paramsFile.\* -exec cat "{}" >> parameters.txt \;
Run Code Online (Sandbox Code Playgroud)
这里的问题是*匹配目录中的所有文件,从而给您带来错误。如果find定位文件而不是 shell 通配符,xargs则获取可用于构造正确长度的行的各个文件名。
| 归档时间: |
|
| 查看次数: |
11493 次 |
| 最近记录: |