Командная строка Linux: рекурсивно перезаписывает каждый файл с версией gzip?

1268
studiohack
______________ myFolder 

Что я могу заменить на _____________, чтобы рекурсивно сжать каждый файл, начиная с myFolder, и заставить gzip перезаписать файл (переименуйте файл gzip в исходное имя файла)?

1

3 ответа на вопрос

4
Matt Beldyk

Вы также можете попробовать

 find myFolder -type f -exec gzip {} \; -exec mv {}.gz {} \; 
Ага, забыл про множественные вызовы -exec в find, мне вроде 14 лет назад 0
2

пытаться:

find myFolder -type f -exec gzip {} + 
Имейте в виду, что это переименует ваши файлы из myFile в myFile.gz 14 лет назад 0
1
Wes Mason

Простой, не очень элегантный скрипт bash состоит в том, чтобы просто войти в него, заархивировать их все в цикле и записать обратно (по умолчанию gzip удаляет несжатый файл):

#!/bin/bash cd myFolder for f in `find ./ -type f` do gzip $f mv $f.gz $f done 

Поместите это в файл с именем «gzip_and_rename.sh», например, chmod -775 и запустите его как ./gzip_and_rename.sh (если он выполняется изнутри самого myFolder, удалите строку «cd myFolder» из сценария).

И да, я знаю, что обратные удары - это зло, но, как я уже сказал, это всего лишь сценарий быстрого взлома. 14 лет назад 0
почему злые бэктики злые, чем вы их заменяете? 14 лет назад 0
См. Http://www.commandlinefu.com/commands/view/1387/backticks-are-evil. 14 лет назад 0

Похожие вопросы