我刚刚转换到linux系统并尝试编写我的第一个bash脚本。我有一个包含众多文件夹的文件夹,每个文件夹下面还有子文件夹和文件,就像这样:
主文件夹
- 文件夹1
- 子文件夹1(包含许多文件)
- 子文件夹2(包含许多文件)
- 文件夹2
- 子文件夹1(包含许多文件)
- 子文件夹2(包含许多文件)
......
- 文件夹1
我想要将所有子文件夹中包含的文件移动到它们各自的父文件夹中。我的第一反应是尝试编写一个for循环。我使用以下命令可以一次处理一个文件夹:
mv MainFolder/Folder1/*/* MainFolder/Folder1/
我希望编写一个 Bash 脚本循环遍历主目录中的所有文件夹。以下是我的代码:
#!/bin/bash
dir1="/pathto/MainFolder"
subs= ls $dir1
for i in $subs; do
mv "$dir1/$i/*/*" "$dir1/$i/"
done
显然,这样做是无效的,但我不明白哪里出了问题。
我还尝试过:
mv MainFolder/*/*/* MainFolder/*/
结果非常糟糕。一旦我成功地完成文件移动,我还想在循环内部删除旧的子文件夹。
MainFolder/Folder1/Sub1/foo.txt
和MainFolder/Folder1/Sub2/foo.txt
? 如果文件名冲突,你是否可以接受一些文件被删除的情况? - twalberg