【发布时间】:2012-07-13 09:27:21
【问题描述】:
操作系统:aix 外壳:bsh
大家好
我有两种类型的文件,一种以 .pdf.marker 结尾,另一种以 .pdf
结尾应该总是有一对同名的(只是扩展名不同)。
当我移动 .pdf.marker 文件时,我还必须移动其对应的 .pdf 文件。
我尝试过这样的事情:
find ${INPUT_LOCATION}/ -name "*.pdf.marker" | xargs -I file mv file ${OUTPUT_LOCATION}/. mv $(basename file .marker) ${OUTPUT_LOCATION}/.
然后我读到:xargs with multiple commands as argument 并尝试了这样的事情:
find ${INPUT_LOCATION}/ -name "*.pdf.marker" | xargs -I file {mv file ${OUTPUT_LOCATION}/.; mv $(basename file .marker) ${OUTPUT_LOCATION}/.;}
但还是不行。
我只需要在 xargs 之后执行 2 个命令。
编辑
按照我得到的建议答案,我尝试将 2 个参数放入一个移动命令中 而不是 xargs 之后的两个单独的移动命令。
find ${INPUT_LOCATION}/ -name "*.pdf.marker" | xargs -I file mv file $(basename file .marker) ${OUTPUT_LOCATION}/.
但是现在,首先移动 .pdf.marker,然后当我尝试从文件名中删除 .marker 以获取 .pdf 文件名我收到警告没有这样的文件或目录。
还有其他方法可以获取 .pdf 文件名字符串吗?
解决方案
find ${INPUT_LOCATION} -name '*.pdf.marker' -exec sh -c 'mv $0 `dirname $0`/`basename $0 .marker` $1' {} ${OUTPUT_LOCATION} \;
在 cca 中移动了 200 000 个文件。 25 分钟。没有问题。
感谢所有参与并提供答案的人,非常感谢你 Nahuel Fouilleul!
【问题讨论】: