#for-loop #unix
#цикл for #unix
Вопрос:
Не могли бы вы, ребята, проверить приведенное ниже сообщение и предоставить мне какое-либо решение или подсказку для решения проблемы с переменной цикла for.
Файлы, которые у меня есть в формате ниже:
/directory/file1.gz -> gunzip file1, it will be in ascll format
/directory/file2.gz -> gunzip file2, but the file2 still in gzip format
Для устранения этой проблемы я написал ниже небольшой скрипт:
for f in ./ETF_Directories_*/*;
do
if file -z "$f" | grep -i ascii
then
echo "file is in ascii format"
else
gunzip "$f"
//**If the file is not in ascii format I mean the second case I want to
move this gunziped file to .gz. So that it will in single .gz format, but
I need command to write, or hint on how to use "mv" command to achieve
what I needed**//
fi
done
Комментарии:
1. Что за ошибку вы получаете? Ваше требование неясно.
2.если формат файла не ascii, как в инструкции else: я хочу заархивировать файл и использовать команду mv, чтобы создать идеальный zip-файл ascii. Вот так:-
gunzip "$f"
mv "$f" "$f.gz"
Но выдает ошибку, что mv не может найти файл или каталог.
Ответ №1:
gunzip x.gz
удалит .gz
, поэтому, когда $f
это something.gz
происходит, расширение теряется и $f
не может быть найдено.
Комментарии:
1. Да, вот где я застрял… Мне нужно выполнить другие команды для этого загруженного файла…. как я могу это сделать ….. могу ли я переместить его в другую переменную???
2. Вы хотите удалить
.gz
при наличии. Используйте"${f%.gz}"
, проверьте с помощьюf="no_dot_gz"
,f="one.gz"
иf="two.gz.gz"
.