Я пытаюсь написать скрипт, который будет проверять подкаталоги на наличие сжатого файла, и, если файл не существует, сжимать необходимый файл.
Я пробовал две версии моего скрипта:
ВЕРСИЯ 1
for directory in /pool/folder/ID*/; do
echo "Starting for loop"
if [ -e /pool/folder/ID*/*.txt.gz ]
then
echo "file already exists"
else
echo "File does not exist"
echo "file is being compressed"
gzip *.txt
fi
done
Это не сработало, и я предположил, что это как-то связано с моим флагом -e: http://www.ducea.com/2009/03/05/bash-tips-if-e-wildcard-file-check-too-many-arguments/
После запуска моего оператора "if" вывод терминала выглядит так, как будто он пытается проверить все подкаталоги на моем компьютере:
Показать все 4854 возможностей? (y или n)
И затем он перечисляет все каталоги. Поэтому я попытался удалить свой флаг -e и использовать ls:
VERSION 2
for directory in /pool/folder/ID*/; do
echo "Starting for loop"
files=$(ls /pool/folder/ID*/*.txt.gz 2> /dev/null | wc -l)
if [ **"$files" != "0"** ]
then
echo "zipped file already exists"
else
echo "Zipped file does not exist"
fi
done
Но произошло то же самое (перечисление всех каталогов).