У меня есть каталог в UNIX, которая имеет тысячи .tgz сжатых файлов, они следуют этому шаблону:ShellScript - IF обработки имен файлов шаблона
01.red.something.tgz
02.red.something.tgz
03.red.anything.tgz
04.red.something.tgz
01.blue.something.tgz
02.blue.everything.tgz
03.blue.something.tgz
04.blue.something.tgz
01.yellow.something.tgz
02.yellow.blablathing.tgz
03.yellow.something.tgz
04.yellow.something.tgz
Они используют большое количество из файловой системы, и мне нужно перечислить их без извлечения самого файла. На самом деле это займет некоторое время, поэтому я считаю, что этот shellscript будет соответствовать потребностям. Я своего рода новым для Shellscript, я учусь, так что я сделал это .sh
$pattern = "red"
for file in *.tgz
do
if [[ ${file} == '...${pattern}.*.tgz' ]]; then
echo" ==> ${file} match the pattern and the output dir is : out/"
tar -tf $file > ./out/$file
else
echo "${file} Doesn't match the pattern"
fi
done
Но я сделал что-то неправильно в если части, и даже тогда, когда образец сопоставляется, я имею получил 'Не соответствует шаблону' сообщение.
Я знаю, что это просто , если, но я не могу понять, почему этот парень не работает. Я был бы признателен, если вы, ребята, объясните, почему это не работает.
спасибо.
'==' не оператор матча; прочитайте «globbing» и используйте '*. $ {pattern}. *. tgz' непосредственно в for-loop –
Спасибо, я сделаю поиск по этому поводу – Imkls