2017-05-09 68 views
0

所以我一直在试着把它们放在一起。使用不同的方法,同时也发现了一些局部的答案,但没有我发现这里的答案加工或只回答问题的一部分,或类似的问题..将文件分类到同名文件夹的Bash脚本

我有这个结构的文件夹多个文件:

nameXX.tar.gz 
md5nameXX.txt 
debugnameXX.txt 

nameYY.tar.gz 
md5nameYY.txt 
debugnameYY.txt 

等...

等等,因为你可以看到变化的是XX文件名的唯一部分,YY等

我需要做的是创建一个脚本,将移动与XX,YY等相匹配的所有文件放入文件夹中h同名。

因此,例如,我想移动所有,

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。我所需要的是一个脚本,它将名为backup-TIMESTAMP的同一文件夹中的所有3个文件移动。在恢复时,YY或XX表示不同的时间戳。 -

感谢您的帮助

+0

你尝试了什么?请分享您的代码 – Steephen

+1

发布到堆栈溢出时,您还应该发布您的问题尝试。你可以阅读更多关于它[这里] [1]。当我们有一个基本脚本来解决问题时,您的问题将更容易和更快地回答。 [1]:http://stackoverflow.com/help/mcve – ShaneNal

+0

我很抱歉家伙。我应该分享我所做的。事实上,我所做的就是尝试多种解决方案: https://stackoverflow.com/questions/22668866/linux-bash-script-to-create-folder-and-move-files http://stackoverflow.com/questions/19633452/create-multiple-folders-using-existing-file-names-in-linux https://stackoverflow.com/questions/22668866/linux-bash-script-to-create-folder-and-move -files 我还更新了第一个问题,以更好地解释我正在尝试做什么。 – subslin

回答

0

没有真正足够的信息在这里工作过,是XX和YY同每一次?如果是的话,你很可能做的每一个在一个班轮mv命令

mv *YY.* /folderYY 
+0

是的,我很抱歉。详细而言,它们是备份快照。每个备份快照创建3个文件。 buckup-TIMESTAMP.tar.gz; md5backup-TIMESTAMP.tXT; debugbackup-TIMESTAMP.txt。我所需要的是一个脚本,它将名为backup-TIMESTAMP的同一文件夹中的所有3个文件移动。在恢复时,YY或XX表示不同的时间戳。 – subslin

1

我没有做复杂的检查,但至少这会让你从什么开始:

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文件,按名称创建文件夹并将所有文件移动到该文件夹​​。

+0

我会试试这个,并会给你反馈。谢谢 – subslin

相关问题