将多个目录内的文件移动到文件夹结构的根目录

将多个目录内的文件移动到文件夹结构的根目录

在下面这个目录列表中,我尝试将所有“example*.file”移动到“test”目录中。

我尝试过类似操作mv * ./test/ ,但只能移动文件夹而不移动文件,我查看了 mv --help,但找不到忽略文件夹的选项。我还尝试过不带 -r 的 cp,但没有用。有没有办法从根目录将文件移动到多个目录,例如在下面的树中,您将进入测试,然后执行 touch 以在其中的所有目录中创建文件,而不仅仅是您所在的根目录。

$ tree ./test/
./test/
├── 1
│   └── example.file
├── 10
│   └── example (14th copy).file
├── 11
│   └── example (12th copy).file
├── 12
│   └── example (7th copy).file
├── 13
│   └── example (17th copy).file
├── 14
│   └── example (16th copy).file
├── 15
│   ├── example (14th copy).file
│   └── example (15th copy).file
├── 16
│   ├── example (12th copy).file
│   └── example (13th copy).file
├── 17
│   └── example (11th copy).file
├── 18
│   └── example (10th copy).file
├── 19
│   └── example (9th copy).file
├── 2
│   └── example (3rd copy).file
├── 20
│   └── example (8th copy).file
├── 3
│   └── example (5th copy).file
├── 4
│   └── example (4th copy).file
├── 5
│   └── example (8th copy).file
├── 6
│   └── example (11th copy).file
├── 7
│   └── example (13th copy).file
├── 8
│   └── example (another copy).file
└── 9
    └── example (copy).file

20 directories, 22 files

答案1

由于文件名是唯一的,并且文件名包含有趣的字符()find并且xargs是要走的路,也是man要阅读的页面。

find test -type f -print0 |\
  echo xargs -0 -r mv --target-directory=test

echo当你对结果满意时,删除,并希望真正做到mv

相关内容