2017-03-23 254 views
0

我有多个zip文件,每个文件都包含具有相同名称的文件,但zip文件具有唯一的名称。我想要做的是将所有具有相同名称的文件放在同一个目录中,但要保留它们来自哪个zip文件,只需将zip文件夹名称添加到文件名中即可。此外,拉链不一定具有相同的文件夹结构 - 具有相同名称的文件可以位于拉链内的任何文件夹中(但我不需要保留中间文件夹名称)。将文件复制到目录并将路径名添加到文件名

例如,说我有

-> zip1 - folder1 - file1 
        - file2 
-> zip2 - file1 
     - file2 

那我想是连在一起的名称得到一个目录下面的文件一起:

- zip1file1 
- zip1file2 
- zip2file1 
- zip2file2 

的“文件夹1”不被忽略,但我真的不在乎,zip文件夹中有名字中的重要信息。

到目前为止,我已经做了

for zip in *.zip; do unzip "$zip" -d "${zip%.zip}"; done 

所有拉链解压到与我想保留的名称自己独特的文件夹。然后,我可以使用“查找”从包含所有解压文件的目录中找到的所有相关文件的列表:

find . -name 'file1.m' 

但我不知道如何移动的这个结果“找”到一个新的目录,并将其所在文件夹的名称添加到其文件名中。

回答

0

我会尽我所能

myfiles是移动文件的目录。 不是一个班轮,但应该工作

DEST="./myfiles" 
mkdir -p $DEST 
find zip* -type f | while read f 
do 
    mv $f $DEST/${f//'/'} 
done 

会做:

mv zip1/folder1/file2 ./myfiles/zip1folder1file2 
mv zip1/folder1/file1 ./myfiles/zip1folder1file1 
mv zip2/file2 ./myfiles/zip2file2 
mv zip2/file1 ./myfiles/zip2file1 
+0

感谢您的回答,但运行在此之后,myfiles的文件夹仍然是空的,我也得到了'用法:MV [-f | -i | -n] [-v]源目标mv [-f | -i | -n] [-v]源...目录'重复警告 – ayw

相关问题