【问题标题】:renaming in one command line, same file which is in multiple folders在一个命令行中重命名,在多个文件夹中的同一个文件
【发布时间】:2014-02-08 03:45:14
【问题描述】:

我需要在一个命令行(bash)中重命名位于 4 个不同目录中的同一个文件...我不能使用“;”或 bash 脚本。谢谢....我正在尝试类似:

mv folder/{folder1,folder2,...}/file folder/{folder1,folder2,...}/new_name_file 

但它不起作用。

【问题讨论】:

    标签: bash file-rename mv


    【解决方案1】:

    这是一种方法:

    $ mkdir foo bar baz
    $ touch {foo,bar,baz}/quux
    $ find foo bar baz -type f -name quux | while read file; do mv "$file" $(dirname "$file")/xyxxy; done
    $ find foo bar baz -type f -name xyxxy
    foo/xyxxy
    bar/xyxxy
    baz/xyxxy
    

    【讨论】:

      【解决方案2】:

      你可以在结尾部分定义更多的行:

      #!/bin/bash                                                                                                                                           
      
      while read dir diir; do
          mv $dir $diir
      done <<___HERE                                                                                                                                        
      /path/to/dir1   /path/to/diir1                                                                                                                        
      /path/to/dir2   /path/to/diir2                                                                                                                        
      ___HERE
      

      你可以在一行中运行它:

      $./script.sh | (Do what you want here)
      

      【讨论】:

        【解决方案3】:

        单线:

        find folder/folder{1,2,3} -type f -name 'file' -exec bash -c 'mv -v {} $(dirname {})/new_name_file' \;
        

        【讨论】:

          【解决方案4】:

          对于这种特定情况,您可以使用:

          echo folder/{folder1,folder2,...} | xargs -n1 echo |xargs -I% mv %/oldfile %/newfile
          

          但是一个更便携的重命名子目录中所有文件的方法是

          rename(){ #usage rename from_name to_name
              find . -name $1 |xargs -l dirname |xargs -I% mv %/$1 %/$2
          }
          

          【讨论】:

            猜你喜欢
            • 2015-01-04
            • 1970-01-01
            • 2015-05-10
            • 1970-01-01
            • 2011-10-21
            • 2019-07-23
            • 1970-01-01
            • 2016-06-24
            • 2020-04-06
            相关资源
            最近更新 更多