繁体   English   中英

Bash脚本,将文件排序到具有相同名称的文件夹中

[英]Bash script that sorts files into folder with same name

所以一段时间以来,我一直在尝试将其组合在一起。 使用了不同的方法,并且还找到了部分答案,但是我在这里找到的所有答案都没有起作用,或者仅解决了部分问题或类似问题。

我的文件夹中有多个具有以下结构的文件:

nameXX.tar.gz
md5nameXX.txt
debugnameXX.txt

nameYY.tar.gz
md5nameYY.txt
debugnameYY.txt

等等...

依此类推,您可以看到文件名中唯一更改的部分是XX,YY等。

我需要创建一个脚本,该脚本将与XX,YY等匹配的所有文件移动到具有相同名称的文件夹中。

例如,我想移动所有这些,

nameXX.tar.gz ,
md5nameXX.txt, 
debugnameXX.txt
All those would move into a folder named nameXX

详细来说,这些是备份快照。 每个备份快照将创建3个文件。 buckup-TIMESTAMP.tar.gz; md5backup-TIMESTAMP.tXT; debugbackup-TIMESTAMP.txt。 我需要的是一个脚本,它将所有3个文件移动到名为backup-TIMESTAMP的同一文件夹中。 在简历中,YY或XX代表不同的时间戳。

谢谢你的帮助

我没有进行复杂的检查,但是至少这可以让您从以下几点入手:

for name in `find . -name "*.tar.gz" | xargs sh -c 'basename $1 .tar.gz' dummy`
do 
    echo "Processing $name" 
    mkdir $name 
    find . -name "$name*" -type f -exec mv {} $name \; 
done

此代码假定您具有文件.tar.gz,以其名称创建文件夹,并将所有文件从该文件夹移至该文件夹。

没有足够的信息在这里工作,XX和YY每次都相同吗? 如果是这样,您可能可以在一个线性mv命令中执行每个操作

mv *YY.* /folderYY

暂无
暂无

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

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