ubuntu 循环以执行每个子文件夹中的命令

3htmauhk  于 2022-11-02  发布在  其他
关注(0)|答案(1)|浏览(129)
  • 每个文件夹都有另一个文件夹,我需要将其中的所有内容向上移动一个文件夹,然后将其删除:
Main_folder
   -->DePreter.Jonas
       -->Huistaak1-HelloWorld_Jonas.DePreter.s.ua_poging_2019-11-12
          --> (Files and folders name doesn't matter)
   -->(another_name)
       -->Huistaa1-HelloWorld_(name)...
          --> more files
    ...

因此,我需要的是访问每个名称文件夹(如“DePreter.Jonas”),并将所有文件从Huistaak 1-HelloWorld...移动到名称文件夹中,然后删除Huistaak 1...文件夹
我已经写了这个,但这是太长的方式,我想它在一个循环。

cd DePreter.Jonas
mv */* */.* . 
find . -type d -name "Huistaak1*" -delete
cd ..

cd Feremans.Len
mv */* */.* . 
find . -type d -name "Huistaak1*" -delete
cd ..

cd Hofkens.Peter
mv */* */.* . 
find . -type d -name "Huistaak1*" -delete
cd ..

cd Janssens.Jan
mv */* */.* . 
find . -type d -name "Huistaak1*" -delete
cd ..

cd Peters.Jolien
mv */* */.* . 
find . -type d -name "Huistaak1*" -delete
cd ..

cd VanHoof.Sarah
mv */* */.* . 
find . -type d -name "Huistaak1*" -delete
cd ..
72qzrwbm

72qzrwbm1#

这可能是你所追求的:

cd /path/to/Main_folder || exit

for dir in */*/
do
    cd "$dir" || exit
    mv ./* ..
    cd - >/dev/null || exit
    rmdir "$dir"
done

或者,在循环体中没有cd ing的更简洁的代码:

cd /path/to/Main_folder || exit

for dir in */*/
do
    mv "$dir"* "${dir%%/*}"
    rmdir "$dir"
done

相关问题