Скорее всего gzip
не изменяет содержимое файла, если только что-то серьезно не нарушено. Вероятно, ваши программы для просмотра сжатых и несжатых файлов делают что-то разное.
Для сравнения содержимого можно использовать md5sum
$ md5sum file
d41d8cd98f00b204e9800998ecf8427e file
$ gzip file
$ zcat file.gz | md5sum
d41d8cd98f00b204e9800998ecf8427e -
Оболочка хранит все аргументы командной строки в так называемых позиционных параметрах , $ 1
, $ 2
, $ 3
и т. Д.
Простой сценарий, который переименовывает все файлы, соответствующие wid _ *. Jil
в каталоге, заменяя строку orig
на update
в имени файла, может выглядеть следующим образом:
#!/bin/sh
dir="$1"
if [ -d "$dir" ]; then
printf 'No such directory: %s\n' "$dir" >&2
exit 1
fi
for filepath in "$dir"/wid_*.jil; do
filename="$( basename "$filepath" | sed 's/orig/update/g' )"
mv -i "$filepath" "$dir/$filename"
done
Или, без использования внешних утилит, с bash
:
#!/bin/bash
dir="$1"
if [[ -d "$dir" ]]; then
printf 'No such directory: %s\n' "$dir" >&2
exit 1
fi
for filepath in "$dir"/wid_*.jil; do
filename="${filepath##*/}"
filename="${filename//orig/update}"
mv -i "$filepath" "$dir/$filename"
done
$ 1 будет первым аргументом вашего сценария bash:
#!/bin/bash
directory="$1"
echo "$directory"
Вы также можете выполнить некоторые проверки, например
#!/bin/bash
directory="$1"
[ -z "$directory" ] && echo "Please provide a directory" && exit 1
[ ! -d "$directory" ] && echo "Directory not found" && exit 2
for file in "$directory"/wid_*.jil
do
mv -i "${file}" "${file/orig/update}"
done