繁体   English   中英

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

[英]How do I move files to a new directory based on their name in 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文件,它们将被跳过。 根据需要进行修改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM