首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >巴什问题。Xargs和在参数列表替换中使用basename命令的问题

巴什问题。Xargs和在参数列表替换中使用basename命令的问题
EN

Stack Overflow用户
提问于 2011-08-22 07:04:58
回答 4查看 4.9K关注 0票数 3

我正在使用bash shell。

嗨,如果有人能提供一些建议的话,ppl会很高兴的,因为谷歌搜索得到了一些答案,但仍然无法让脚本工作。

我刚开始使用bash脚本,并得到了一个要修改的脚本,因为在处理完文件后,它无法将大量文件从和输入目录复制到输出目录。

描述:

我们在一个大目录里有一堆pdf。我们处理一个名为filename.pdf的文件,在处理它之后,创建一个名为filename.pdf.marker的附加文件,然后将filename.pdf.marker和filename.pdf文件从input/in目录移动到目录输出/out。我们处理了大约10-15万个文件。

脚本应该执行以下操作:

  1. 选择输入/目录中的所有.marker文件名
  2. move.marker文件到目录输出/输出(单独行完成)
  3. 从所选文件名中删除.marker,
  4. 将文件filename.pdf移动到输出/输出目录

G 211

旧脚本(不适用于更大数量的文件):

代码语言:javascript
运行
复制
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文件。

代码语言:javascript
运行
复制
find /input/in -iname "*.marker" -print0 | xargs -0 -r -I {} mv `basename {} .marker`  /output/out

我的问题在于:basename {} .marker为什么没有从字符串filename.pdf.marker,中提取字符串filename.pdf并替换为mv命令?

(欢迎任何帮助;)

更新

  • 更正了脚本应该做什么的描述:文件类型.pdf和.pdf.marker都应该在我的脚本中移动,而不是复制。
  • 添加了旧脚本,这些脚本不能很好地处理较大数量的文件。
EN

Stack Overflow用户

发布于 2011-08-22 14:24:12

使用GNU并行,您应该能够:

代码语言:javascript
运行
复制
ls "$V04"/*.pdf.marker | parallel -q mv {.} {} "$VLOGDIR"

即使$V04和$VLOGDIR包含“”空格\t,这也是可行的。

观看介绍视频以了解更多信息:http://www.youtube.com/watch?v=OpaiGYxkSuQ

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7144106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档