我有几个文件夹(“亚马逊”,“尼日尔”,“莱茵河”,...)。在每个文件夹中我都有几个子文件夹(“gfdl”,“hadgem”,“ipsl”,...)。每个子文件夹由5个子文件夹组成(例如,在“amazon”中,子文件夹“gfdl”由5个子文件夹'amazon_gfdl'、'amazon_gfdl1'、...、'amazon_gfdl5'组成);其他子文件夹遵循相同的结构(例如,在“amazon”子文件夹“ipsl”中,由 5 个子文件夹“amazon_ipsl”、“amazon_ipsl1”、“amazon_ipsl2”、...直到“amazon_ipsl5”组成。我有大量文件夹因此我的问题如下:我如何组织每个文件夹和子文件夹,以便在每个子文件夹(“gfdl”,“hadgem”,“ipsl”,...)中,有4个新文件夹。创建目录(“1”、“2”、“3”、“4”),然后将文件夹例如“amazon_gfdl”(已存在于“gfdl”中)复制到每个新目录中,最后将“ amazon_gfdl1”被移动到新目录“1”,“amazon_gfdl2”被移动到新目录“2”,依此类推!我目前正在使用命令 cp 并在每个子文件夹中移动,但它并不真正有效,我可能需要额外的生命才能完成这样的任务!因此,非常感谢您的帮助或提示!
答案1
您可以编写一个小脚本来为您做到这一点,按照这些思路(根据需要进行调整,我不确定我的故事是否正确):
> cat tst.sh
#!/bin/bash
for river in amazon niger rhine ; do
for name in gfdl hadgem ipsl ; do
for count in 1 2 3 4 ; do
mkdir ${river}/${name}/${count}
cp -a ${river}/${name}/${river}_${name} ${river}/${name}/${count}
mv ${river}/${name}/${river}_${name}${count} ${river}/${name}/${count}
done
done
done
运行之前:
> find . | sort
.
./amazon
./amazon/gfdl
./amazon/gfdl/amazon_gfdl
./amazon/gfdl/amazon_gfdl1
./amazon/gfdl/amazon_gfdl2
./amazon/gfdl/amazon_gfdl3
./amazon/gfdl/amazon_gfdl4
./amazon/gfdl/amazon_gfdl5
...
结果:
> chmod u+x tst.sh
> ./tst.sh
> find . | sort
.
./amazon
./amazon/gfdl
./amazon/gfdl/1
./amazon/gfdl/1/amazon_gfdl
./amazon/gfdl/1/amazon_gfdl1
./amazon/gfdl/2
./amazon/gfdl/2/amazon_gfdl
./amazon/gfdl/2/amazon_gfdl2
./amazon/gfdl/3
./amazon/gfdl/3/amazon_gfdl
./amazon/gfdl/3/amazon_gfdl3
./amazon/gfdl/4
./amazon/gfdl/4/amazon_gfdl
./amazon/gfdl/4/amazon_gfdl4
./amazon/gfdl/amazon_gfdl
./amazon/gfdl/amazon_gfdl5
...