2016-11-26 14 views
0

我有點奇怪,我似乎無法弄清楚。郵編垃圾路徑選項不起作用

這是設置。我正在通過數組下載一些給予腳本的文件。這些文件不一定在同一個文件夾中,所以我不認爲只是使用cd來更改目錄,然後添加我想要的文件即可使用。

我添加了-j到我的shell命令爲了不包括目錄,它的工作...有點。現在,我已將所有文件放在zip的頂層,但它也包含相應目錄中的文件的目錄和重複版本。

有什麼想法?

編輯:添加代碼。

我有文件的一個這樣的數組:

Images 
    --image1.jpg 
    --image2.jpg 
Other images 
    --image3.jpg 
    --image4.jpg 
Other folder\Another subfolder\Why so many folders\ 
    --image5.jpg 

所以想什麼,我是把所有的圖像在zip的根,但什麼我得到是這兩個目錄和junked目錄在一個zip中:

Zip 
    --Images 
     --image1.jpg 
     --image2.jpg 
    --Other images 
     --image3.jpg 
     --image4.jpg 
    --Other folder 
     --Another subfolder 
      --Why so many folders 
       --image5.jpg 
       --image6.jpg 
    --image1.jpg 
    --image2.jpg 
    --image3.jpg 
    --image4.jpg 
    --image5.jpg 
    --image6.jpg 

我的代碼很簡單,我使用-j去掉目錄並將文件數組傳遞給zip。如果我刪除了-j,它只包含文件的一個副本,儘管在這些文件夾中,所以我知道問題不是我的數組翻倍在文件上。

zip -jq zip array_of_files 

編輯 解決。有點。

由於某些原因,當我將-j放在命令行末尾時,它按預期工作。不確定爲什麼這很重要,但它修復了它。這是有用的。

zip zipname array_of_files -jq 

回答

1

您可以使用findzip組合在一起。在與各個文件夾相同的級別運行上述命令。

find . -type f -name "*.jpg" -print | zip -jq myfile.zip [email protected] 

find命令從他目前的路徑,並與zip[email protected]選項是stdin其前面的命令產生閱讀列出jpg文件。以及垃圾路徑的-jq標誌。

通過上述命令,我能夠達到您想要的結構。使用unzip -l列出存檔下的文件而不提取。

$ unzip -l myfile.zip 
Archive: myfile.zip 
    Length  Date Time Name 
-------- ---- ---- ---- 
     0 11-26-16 13:08 image1.jpg 
     0 11-26-16 13:09 image2.jpg 
     0 11-26-16 13:09 image3.jpg 
     0 11-26-16 13:09 image4.jpg 
--------     ------- 
     0     4 files 

上面的模擬我的是你的原始輸入,當你總共有4張圖片。

+0

不幸的是,問題是我不只是抓住一個文件夾中的所有照片。這是一個程序生成的數組,包括來自不同文件夾的文件,包括一些文件,不包括其他文件等等。所以我不認爲find * .jpg是一個好的解決方案。它需要從我擁有的數組中獲取特定的輸入。任何線索爲什麼-j會給我重複? –

+0

標記爲已解決。我仍然不明白問題是什麼,但是當我將-j移到命令末尾時,一切都按預期工作。奇怪的。 –

+1

@JoeCole:如果它不能解決你的問題,你不必強制接受答案。壞完全無法幫助你。 – Inian