Делаю скрипт, который перебирает все файлы с расширением *.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}»
- тоже ничего не получиться.Как засунуть в паттерн имя файла, содержащее спец символы?
>[оверквотинг удален]
> 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;ммм а если файлов *.ext1 миллион так и будите поиск насиловать по рекурсии?
не проще сделать поиск два раза максимум и работать со списками *.ext1 *.ext2> Все отлично работает на файлах, содержащих буквы, цифры, пробелы. Но совершенно не
> работает на файлах, имеющих в названиях '[', ']' или ещё какую
> экзотику типа спецсимволов.эта хрень по вышеописанной причине отлично работать не может
> Т.е. если рядом будут лежать файлы:
> file1[my].ext1
> file1[my].ext2
> -то второй фал не будет найден.
> Если строчку
> find "." -type f -iname «${myFILE_name}.ext2»
> заменить на
> find "." -type f -iname «*.ext2» | grep «${myFILE_name}»
> - тоже ничего не получиться.
> Как засунуть в паттерн имя файла, содержащее спец символы?научится пользоваться кавычками к месту и по делу?
Pahanivo, ваш ответ на вопрос "Как засунуть в паттерн имя файла, содержащее спец символы?" был очень ценным.
> Pahanivo, ваш ответ на вопрос "Как засунуть в паттерн имя файла, содержащее
> спец символы?" был очень ценным.Правильный вопрос: Как не упустить "не те" символы за пределы shell-переменных?
Правильный ответ: Использовать экранирование и квотирование.+++Мир-труд-май. Все обижают двоечников, они обижаются на всё.
> Правильный ответ: Использовать экранирование и квотирование.
> +++Мир-труд-май. Все обижают двоечников, они обижаются на всё.Да лааааднаа! (С)
Твой правильный ответ - самая ... кхм ... самая мрачная часть шелла! :-\
От этого не только двоечники плачут :)
>> Правильный ответ: Использовать экранирование и квотирование.
>> +++Мир-труд-май. Все обижают двоечников, они обижаются на всё.
> Да лааааднаа! (С)
> Твой правильный ответ - самая ... кхм ... самая мрачная часть шелла!
> :-\
> От этого не только двоечники плачут :)Да, осспадя, и пусть.
Туда же:
* не умеющие выбрать инструмент под задачу,
* не могущие показать преподу знание указанного им bash-а,
* смогшие показать преподу, на троечку, показное знание, но не пошедшие мести улицы по результату
** +нанявшие таковых
> Твой правильный ответ - самая ... кхм ... самая мрачная часть шелла!
> :-\
> От этого не только двоечники плачут :)не соглашусь! эта вполне себе понятная вещица ... кхм ... если включить мозг, и прочитать хотя бы бегло простой мануал по шелу. а студиоузы-халявщики ... да забили тут давно на них, тем паче что со временем тупизм и наглость вопрошающих зашкаливает все возможные лимиты.
то что в топе даже быдлокодом назвать сложно :)