Jak zamaskować wszystkie pliki rekursywnie w katalogu docelowym?

30

Chciałbym się dowiedzieć, jakiego polecenia użyć, aby rekursywnie zamaskować wszystkie pliki w katalogu docelowym? Próbowałem użyć polecenia unzip, ale to nie zadziałało.

Próbowałem z polecenia Rozpakuj wszystkie pliki zip w folderze docelowym?

użytkownik2028856
źródło

Odpowiedzi:

15

Za pomocą poniższych poleceń. Zamień <path_of_your_zips>na ścieżkę do plików ZIP i <out>na folder docelowy:

  • Dla plików GZ

    find <path_of_your_zips> -type f -name "*.gz" -exec tar xf {} -C <out> \;
    

    lub

    find <path_of_your_zips> -type f -name "*.gz" -print0 | xargs -0 -I{} tar xf {} -C <out>
    
  • Dla plików ZIP

    find <path_of_your_zips> -type f -name "*.zip" -exec unzip {} -d <out> \;
    

    lub

    find <path_of_your_zips> -type f -name "*.zip" -print0 | xargs -0 -I{} unzip {} -d <out>
    
AB
źródło
Czy to działa z plikami .gz?
user2028856
1
poprawione, teraz tak :)
AB
2
Dlaczego nie -execjak find . -type f -name "*.gz" -exec tar xzf {} -C <out> \;?
Elliott Frisch
1
działa tylko w przypadku plików tarball, a nie tylko plików w formacie g
Covich
1
Pliki spakowane gzip, które nie są plikami tar, dają następujący błąd:tar: This does not look like a tar archive
Wstrzymane do odwołania.
64

gunzipma -ropcję. Od man gunzip:

   -r --recursive
          Travel  the directory structure recursively. If any of the 
file names specified on the command line are directories, gzip 
will descend into the directory and compress all the files it finds
there (or decompress them in  the  case  of gunzip ).

Więc jeśli chcesz, aby gunzipwszystkie skompresowane pliki ( gunzipobecnie można zdekompresować pliki utworzone przez gzip, zip, kompresuj, kompresuj -H lub spakuj) wewnątrz katalogu /foo/bari wszystkich jego podkatalogów:

gunzip -r /foo/bar

Będzie to także obsługiwać nazwy plików ze spacjami.

heemayl
źródło