Простой .tar
архив, созданный с помощьюcf
(сv
)или без него, не сжат; чтобы получить архив .tar.gz
или .tgz
, сожмите его:
gzip < my_files.tar > my_files.tgz
Вы можете добавить -9
для лучшего сжатия:
gzip -9 < my_files.tar > my_files.tgz
Оба варианта оставят оба архива; вы можете использовать
gzip -9 my_files.tar
вместо этого , который создаст my_files.tar.gz
и удалит my_files.tar
(, если все пойдет хорошо ). Затем вы можете переименовать my_files.tar.gz
в my_files.tgz
, если хотите.
Во многих реализациях tar
вы можете извлекать архивы, не указывая параметр z
, а tar
сам решит, что делать — так что вы можете использовать одну и ту же команду со сжатыми и несжатыми архивами.
Предлагаю
for f in dir/*; do awk -F ',' '$1==f{s+=$2+$3}END{print f","s;if(s>400)print f" has exceeded 400"}' f="$(basename "$f")" dir.csv; done
Или в развернутом эквивалентном виде:
for f in dir/*; do
awk -F ',' '
$1==f{s+=$2+$3}
END{
print f","s
if(s>400)print f" has exceeded 400"
}
' f="$(basename "$f")" dir.csv
done
Для каждого файла внутри dir/
его базовое имя (, т. е. имя без пути ), передается в awk-скрипт как переменная f
.
В скрипте awk в качестве разделителя полей используется запятая с -F ','
. Затем, если первое поле dir.csv
равно f
, сумма 2-го и 3-го полей добавляется к s
. Если сумма превышает 400, сообщение включается.