Jak zamaskować wszystkie pliki rekursywnie w katalogu docelowym?


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>
    

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.