在下面这个目录列表中,我尝试将所有“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