我需要将每个目录移动到其父目录内的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 文件夹。
文件名中的空格将由令牌正确处理{}
。无需插入引号,尽管您可以这样做。