Я считаю, что ответ - извлечь диск и снова вставить его. Вы можете запустить
diskutil eject /dev/disk1
в терминале, заменив 1 в / dev / disk1
на номер диска рассматриваемого диска.
Не используйте gzip
, вместо этого используйте zcat
, который не ожидает расширения. Вы можете сделать все за один раз. Просто попытайтесь zcat
файл и, если это не удастся, потому что он не сжат, cat
его вместо этого:
for f in *; do
( zcat "$f" || cat "$f" ) > temp &&
mv temp "$f".ext &&
rm "$f"
done
Сценарий выше сначала попытается zcat
файл в temp
и, если это не удастся (если файл не в формате gzip), он просто cat
его. Это выполняется в подпрограмме для перехвата вывода любой команды и перенаправления его в временный файл (temp
). Затем temp
переименовывается в оригинальное имя файла плюс расширение (.ext
в данном примере), а оригинал удаляется.
Вы можете сделать что-то вроде
for f in ./*
do
gzip -cdfq "$f" > "${f}".some_ext
done
Это обрабатывает все файлы (даже несжатые, через -f
) и записывает (через -c
) вывод на stdout с использованием перенаправления для сохранения содержимого каждого файла в его аналоге .some_ext
. Затем вы можете удалить оригиналы, например. с bash
shopt extglob
rm -f ./!(*.some_ext)
или zsh
setopt extendedglob
rm -f ./^*some_ext
Вы даже можете сохранить полученные файлы в другом каталоге (на этот раз при условии, что вы хотите удалить исходное расширение), например.
for f in *
do
gzip -cdfq -- "$f" > /some/place/else/"${f%.*}".some_ext
done
, а затем удалить все в текущем каталоге ...
Здесь будет представлен список всех файлов, сжатых с помощью gzip:
file /path/to/files | grep ': gzip compressed data' | cut -d: -f1
Чтобы добавить расширение .gz
к любым gzip-файлам, можно воспользоваться следующим уродливым хаком:
for file in ./*; do
if gzip -l "$file" > /dev/null 2>&1; then
case "$file" in
*.gz) :;; # The file already has the extension corresponding to its format
*) mv "$file" "${file}.gz";;
esac
# Uncomment the following line to decompress them at the same time
# gunzip "${file}.gz"
fi
done