我正在使用bash shell。
嗨,如果有人能提供一些建议的话,ppl会很高兴的,因为谷歌搜索得到了一些答案,但仍然无法让脚本工作。
我刚开始使用bash脚本,并得到了一个要修改的脚本,因为在处理完文件后,它无法将大量文件从和输入目录复制到输出目录。
描述:
我们在一个大目录里有一堆pdf。我们处理一个名为filename.pdf的文件,在处理它之后,创建一个名为filename.pdf.marker的附加文件,然后将filename.pdf.marker和filename.pdf文件从input/in目录移动到目录输出/out。我们处理了大约10-15万个文件。
脚本应该执行以下操作:
G 211
旧脚本(不适用于更大数量的文件):
FILELIST=$(ls ${V04}/*.pdf.marker 2> /dev/null | sort)
for FILEMARKER in ${FILELIST}; do
    FILENAME=${V04}/$(basename $FILEMARKER .marker)
        mv ${FILENAME} ${VLOGDIR}/.  
        mv ${FILENAME}.marker ${VLOGDIR}/.  
    done  因此,我需要使用xargs命令。
问题:
我设法将.marker文件移动到一个单独的行中。现在,我需要用这个脚本行移动.pdf文件。
find /input/in -iname "*.marker" -print0 | xargs -0 -r -I {} mv `basename {} .marker`  /output/out我的问题在于:basename {} .marker为什么没有从字符串filename.pdf.marker,中提取字符串filename.pdf并替换为mv命令?
(欢迎任何帮助;)
更新
发布于 2011-08-22 14:24:12
使用GNU并行,您应该能够:
ls "$V04"/*.pdf.marker | parallel -q mv {.} {} "$VLOGDIR"即使$V04和$VLOGDIR包含“”空格\t,这也是可行的。
观看介绍视频以了解更多信息:http://www.youtube.com/watch?v=OpaiGYxkSuQ
https://stackoverflow.com/questions/7144106
复制相似问题