移动具有不同结构扩展名的文件

移动具有不同结构扩展名的文件

我需要将每个目录移动到其父目录内的file.tif目录。TIFF

    ├── 1
    │   ├── 240_01.tif
    │   ├── 240_02.TIF
    │   └── TEST
    │       └── syg_240_test_1.tif
    ├── 2-3
    │   ├── 2
    │   │   ├── 240_01.tif
    │   │   ├── 240_02.TIF
    │   │   └── TEST
    │   │       └── syg_240_test_1.tif
    │   └── 3
    │       ├── 240_01.tif
    │       ├── 240_02.TIF
    │       └── TEST
    │           └── syg_240_test_1.tif
    └── 4
        ├── 240_01.tif
        ├── 240_02.TIF
        └── TEST
            └── syg_240_test_1.tif

例如它应该看起来像这样:

├── 1
│   ├── TEST
│   │   └── syg_240_test_1.tif
│   └── TIFF
│       ├── 240_01.tif
│       └── 240_02.TIF
├── 2-3
│   ├── TEST
│   │   └── syg_240_test_1.tif
│   └── TIFF
│       ├── 2
│       │   ├── 240_01.tif
│       │   └── 240_02.TIF
│       └── 3
│           ├── 240_01.tif
│           └── 240_02.TIF
└── 4
    ├── TEST
    │   └── syg_240_test_1.tif
    └── TIFF
        ├── 240_01.tif
        └── 240_02.TIF

我尝试使用,mv /path/*/*.tif/ /path/*/TIFF/*.tif但是没有作用。

答案1

再次,find可能会有所帮助。您可以有选择地tiff在第一级子文件夹中查找文件,然后使用-execdir命令将找到的文件移动到当前目录中的 TIFF 文件夹。

您可以调用一个小脚本来测试 TIFF 文件夹是否存在,或者在移动所有 tiff 文件之前创建它,但这一次,分两步操作可能更容易:1) 在您需要的任何文件夹中创建 TIFF 文件夹,然后 2) 将 TIFF 文件移动到那里

find . -maxdepth 1 -type d -path '*/*' -exec mkdir {}/TIFF \;

将会找到文件夹“1”、“2”等(前提是您的当前目录包含这些文件夹),并在每个文件夹中创建一个 TIFF 目录。如果文件夹 TIFF 已存在,则会显示错误消息。

第二条命令可以将所有tiff文件移出到新创建的文件夹中:

find . -type f -ipath '*/*/*.tif' -execdir mv {} TIFF \;

-type f在这里,我们只在文件夹“1”、“2”等中搜索文件( ),但不在下面搜索,因为文件模式是( -ipath)。-ipath-path表示匹配不区分大小写。-execdir操作执行后续命令,但是当前文件夹是找到的文件的文件夹。{}代表找到的文件。由于-execdir,这只是文件的基本名称。文件将移动到当前文件夹中的 TIFF 文件夹。

文件名中的空格将由令牌正确处理{}。无需插入引号,尽管您可以这样做。

相关内容