Мог также быть сделан в простой (портативной/совместимой) оболочке Bourne во множестве путей со стандартными инструментами намного менее изящными способами, чем использование усовершенствованной оболочки globbing или команд с созданными в исключении опциями.
Если нет слишком многих файлов (и не с именами включая пробелы и/или разрывы строки), это могло быть путем:
cp `ls | egrep -v '^excludename$'` destdir/.
Конечно, bash
и инструменты GNU являются большими и мощными, но они все еще не всегда доступны. Если бы Вы намереваетесь поместить его в портативный сценарий, я рекомендовал бы find
как в комментарии Rush.
Из страницы справочника:
CAVEATS When writing compressed data to a tape, it is generally necessary to pad the output with zeroes up to a block boundary. When the data is read and the whole block is passed to gun‐ zip for decompression, gunzip detects that there is extra trailing garbage after the compressed data and emits a warning by default. You have to use the --quiet option to suppress the warning.
Таким образом, казалось бы, что Вы в безопасности.
Отметьте, хотя тот Ваш код не работает, поскольку необходимо было бы передать conv=notrunc
на втором dd
вызов.
С другой стороны, можно сделать:
dd bs=4000 seek=1 count=0 of=file.gz
или
truncate -s 4000 file.gz
Для создания этого 4 000 байтов шириной (на самом деле не пишущий нули просто сделайте это редким).