То, что вы хотите, может быть легко сделано. Звоните:
star -x f=archive.tgz -find ! -type l
Последние star
исходники находятся в пакете schilytools
. star
— старейшая бесплатная реализация tar.
Прежде всего, если вы хотите проверить, существует ли файл, не нужно использовать восклицательный знак !
, так как [ -e FILE ]
вернет True if FILE exists
.
Но проблема в том, что ваш bash-скрипт не может проверить, существует ли 2019_06
, потому что эти файлы находятся в S3. Строки в $FILES — это просто строки.
Вы можете проверить с помощью [ -n STRING ]
, что означает True if the length of "STRING" is non-zero
.
for file in `cat $FILES`
do
if [ -n "$file" ]
then
echo $file
s3cmd du -r s3://path1/path2/$file
fi
done
aws s3 ls "s3://path1/path2/" | while read file
do
# do something with $file
done
Использование подстановки может быть проблематичным в некоторых крайних случаях. Далее используется работа find
, которая менее чувствительна к этим проблемам.
find "s3://path1/path2/" -type f | while read -r file
do
echo $file
done