在linux中,如何根据文件的名称将文件移动到新目录



我是linux的新手,需要解决一个问题,我有一个目录,里面有很多文件,如下所示:

./data/xaa_basic
./data/xaa_extra
./data/xab_basic
./data/xab_extra
./data/xac_basic
./data/xac_extra
... (+400)

如何创建一个脚本,将它们组织到子目录中,如下所示?

./data/1/xaa_basic
./data/1/xaa_extra
./data/2/xab_basic
./data/2/xab_extra
./data/3/xac_basic
./data/3/xac_extra
... (+400)

您可以尝试以下操作(假设您当前的工作目录是顶级data(:

i=0; for f in x{a..d}{a..d}; do mkdir -p $((++i)); mv ${f}_{extra,basic} $i; done

调整边界以匹配您拥有的文件。你也可以使用一种更简单的方法:

i=0; for f in x*_extra; do mkdir -p $((++i)); mv "${f%_extra}"_{extra,basic} $i; done

如果您有任何xxx_basic格式的文件没有匹配的_extra文件,它们将被跳过。根据需要进行修改。

最新更新