操作系统:aix 外壳:bsh
你好,pp
我有两种类型的文件,一种以.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!