Я искал способ перечислить файл, который не существует из списка файлов, которые необходимы для существования. Файлы могут существовать в нескольких местах. То, что у меня есть сейчас:Bash скрипт для списка файлов не найден
#!/bin/bash
fileslist="$1"
while read fn
do
if [ ! -f `find . -type f -name $fn ` ];
then
echo $fn
fi
done < $fileslist
Если файл не существует, команда find ничего не печатает, и тест не работает. Удаление не и создание условия if then else не решает проблему.
Как распечатать имена файлов, которые не найдены в списке имен файлов?
Новый скрипт:
#!/bin/bash
fileslist="$1"
foundfiles="~/tmp/tmp`date +%Y%m%d%H%M%S`.txt"
touch $foundfiles
while read fn
do
`find . -type f -name $fn | sed 's:./.*/::' >> $foundfiles`
done < $fileslist
cat $fileslist $foundfiles | sort | uniq -u
rm $foundfiles
Найти то, что вы можете и дифф со списком можно ожидать? – cdeszaq
@cdeszaq, первое, что я подумал, но не смог придумать способ сделать это без временных файлов или явных bashisms :) –
В настоящее время я создаю список того, что я могу найти, и разницу с файловым списком. Я думал, что смогу автоматизировать это для создания списка файлов, над которыми я должен работать. – user1161495