2017-03-23 332 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

相關問題