【问题标题】:Linux xargs tricks to rename a fileLinux xargs 重命名文件的技巧
【发布时间】:2019-01-06 11:21:46
【问题描述】:

我想通过

将文件复制到存档目录
  • 删除 gz 扩展
  • 将日期附加到文件名,然后
  • 向后附加 gz 扩展

这是我的尝试

find . -maxdepth 1 -name '*.gz'|xargs  -I{} cp {} archive/{}.$(date '+%Y%m%d').gz

假设有一个名为 test1.txt.gz 的文件

它的作用是它给了我

test1.txt.gz.20181214.gz

我想要的是

test1.txt.20181214.gz

有什么想法吗?

【问题讨论】:

    标签: shell unix command xargs


    【解决方案1】:

    您可以使用以下命令:

    find . -maxdepth 1 -name '*.gz'| sed 's/\.gz$//' | xargs -I{} cp {}.gz archive/{}.$(date '+%Y%m%d').gz
    

    您通过sed 添加中间处理以删除结尾的“.gz”扩展名。

    您还需要调整cp 命令并将“.gz”附加到将被复制的文件以避免文件未找到错误: cannot access '...': No such file or directory,因为xargs 命令将不再具有完整的文件名。

    【讨论】:

      【解决方案2】:

      如果你有 GNU Parallel,它看起来像这样:

      find . -maxdepth 1 -name '*.gz'| parallel cp {} archive/{.}.$(date '+%Y%m%d').gz
      

      【讨论】:

        猜你喜欢
        • 2014-10-26
        • 2016-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-18
        相关资源
        最近更新 更多