ls | while read filename; do tar -czvf "$filename".tar.gz "$filename"; rm "$filename"; done


Команда ls выводит список файлов и директорий в текущей директории. Затем эти файлы передаются в цикл while, где каждое имя файла читается в переменную filename. Внутри цикла выполняются следующие действия: архивация файла с помощью tar -czvf, создаётся архив с именем filename.tar.gz, содержащий исходный файл filename, а затем исходный файл удаляется с помощью rm.

Эта команда полезна, если нужно сжать каждый файл в директории отдельно. Альтернативой может быть использование цикла for вместо while, если известно, что файлы не содержат пробелов или специальных символов. Если файлы содержат пробелы или специальные символы, можно использовать команду find вместо ls, чтобы получить список файлов без проблем с обработкой специальных символов. Аргументы команды — отсутствуют.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *