Делаю скрипт, который перебирает все файлы с расширением *.ext1 и по каждому найденному file.ext1 должен найти файл с расширением ext2 но с таким же именем file, т.е. зная file.ext1 ищем file.ext2
вот такой код:
find "." -type f -iname «*.ext1» | sort | while read file_ext1
do
myFILE_basename=$(basename «$file_ext1») # убираем путь к файлу
myFILE_name=${myFILE_basename%.*} # убираем расширение, получаем только имя файла
find "." -type f -iname «${myFILE_name}.ext2» | sort | while read file_ext2
do
echo «$file_ext1»
echo «$file_ext2»
done;
done;
Все отлично работает на файлах, содержащих буквы, цифры, пробелы. Но совершенно не работает на файлах, имеющих в названиях '[', ']' или ещё какую экзотику типа спецсимволов.
Т.е. если рядом будут лежать файлы:
file1[my].ext1
file1[my].ext2
-то второй фал не будет найден.
Если строчку
find "." -type f -iname «${myFILE_name}.ext2»
заменить на
find "." -type f -iname «*.ext2» | grep «${myFILE_name}»
- тоже ничего не получиться.
Как засунуть в паттерн имя файла, содержащее спец символы?