【问题标题】:Linux command/script replacing folders/directoriesLinux 命令/脚本替换文件夹/目录
【发布时间】:2017-07-09 14:48:39
【问题描述】:

我在 ubuntu 机器上设置了以下文件夹:
(括号表示文件夹)

[main]
   |
   |--- [old]
   |      |
   |      |--- [thequick]
   |      |           |
   |      |           |--- [aaaa] --- some files
   |      |           |--- [bbbb] --- some files
   |      |           |--- [cccc] --- some files
   |      |           |--- [dddd] --- some files
   |      |           |--- some files
   |      |
   |      |--- [brownfox]
   |      |           |
   |      |           |--- [aaaa] --- some files
   |      |           |--- [bbbb] --- some files
   |      |           |--- [cccc] --- some files
   |      |           |--- [dddd] --- some files
   |      |           |--- some files
   |      |---  ...
   |      |
   |      |--- [lazydog]
   |                  |
   |                  |--- [aaaa] --- some files
   |                  |--- [bbbb] --- some files
   |                  |--- [cccc] --- some files
   |                  |--- [dddd] --- some files
   |                  |--- some files
   |
   |--- [new]
          |
          |--- [thequick]
          |           |
          |           |--- [aaaa] --- some files
          |           |--- [bbbb] --- some files
          |           |--- some files
          |
          |--- [brownfox]
          |           |
          |           |--- [aaaa] --- some files
          |           |--- [bbbb] --- some files
          |           |--- some files
          |---  ...
          |
          |--- [lazydog]
                      |
                      |--- [aaaa] --- some files
                      |--- [bbbb] --- some files
                      |--- some files

我需要找到一种快速方法,将所有 old [aaaa] 和 [bbbb] 文件夹替换为各自的 new [aaaa] 和 [bbbb] 文件夹,不影响任何其他旧东西。

【问题讨论】:

  • replace是什么意思:将new/**/aaaa下面包含的文件移动到old/**/aaaa
  • 这里提出了同样的问题。这个链接可能对superuser.com/questions/358843/…有帮助

标签: linux bash shell ubuntu command


【解决方案1】:

你可以这样做:

cd /main/old
find . -type d \( -name 'aaaa' -o -name '-bbbb' \) -exec cp -RfP {} ../new/{} \;

【讨论】:

    【解决方案2】:

    这是明确且非常标准的

    cd main/old
    for dir in `find . \( -name aaaa -o -name bbbb \) -a -type d`
    do
        (
        cd ..
        if [ -d new/$dir ]
        then
            rm -rf old/$dir
            mv new/$dir old/$dir
        fi
        )
    done
    cd ../..
    

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 2014-11-03
      • 2018-05-17
      • 1970-01-01
      相关资源
      最近更新 更多