Як я рециркулюю всі файли рекурсивно в цільовий каталог?


30

Мені хотілося б знати, яку команду потрібно використовувати для рецидивування всіх файлів у цільовому каталозі? Я спробував використати команду unzip, але це не вийшло.

Я спробував команду з Розпакувати всі поштові файли в цільовій папці?

Відповіді:


15

Використовуючи команди нижче. Замініть <path_of_your_zips>шлях до ваших ZIP-файлів та <out>папкою призначення:

  • Для файлів GZ

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

    або

    find <path_of_your_zips> -type f -name "*.gz" -print0 | xargs -0 -I{} tar xf {} -C <out>
    
  • Для ZIP-файлів

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

    або

    find <path_of_your_zips> -type f -name "*.zip" -print0 | xargs -0 -I{} unzip {} -d <out>
    

Це працює з .gz файлами?
користувач2028856

1
покращено, зараз так :)
AB

2
Чому не -execподобається find . -type f -name "*.gz" -exec tar xzf {} -C <out> \;?
Елліот Фріш

1
працювати лише для файлів tarball, а не лише для g-zip
Covich

1
gzipped файли, які не є tar-файлами, дають цю помилку:tar: This does not look like a tar archive
Призупинено до подальшого повідомлення.

64

gunzipє -rваріант. Від 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 ).

Отже, якщо ви хочете, щоб gunzipусі стиснуті файли (в gunzipданий час можуть розпаковувати файли, створені gzip, zip, компресувати, стискати -H або pack) всередині каталогу /foo/barта всіх його підкаталогів:

gunzip -r /foo/bar

Це також буде обробляти імена файлів з пробілами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.