История изменений
Исправление Kroz, (текущая версия) :
Используй LORCODE, в частности тег [code]. А то текст ни прочитать, ни скопировать.
Твоя проблема в том, что '[', ']' и т. п. символы воспринимаются как спецсимволы регулярки, а не как часть имени файла. Еще проблема, что я не нашел правил регулярок find. Но у менять есть готовый рецепт для sed, а у find есть опция -regextype
.
Вот это работает (заменено 2 строки по сравнению с твоим):
#!/bin/bash
find "." -type f -iname "*.ext1" | sort | while read file_ext1; do
myFILE_basename=$(basename "$file_ext1")
myFILE_name=$( echo "${myFILE_basename%.*}" | sed 's/\\/\\\\/g; s/\//\\\//g; s/\./\\./g; s/\*/\\*/g; s/\^/\\^/g; s/\$/\\$/g; s/\[/\\[/g; s/\]/\\]/g;' )
find "." -type f -regextype sed -iname "${myFILE_name}.ext2" | sort | while read file_ext2 ; do
echo "$file_ext1"
echo "$file_ext2"
done
done
Исходная версия Kroz, :
Используй LORCODE, в частности тег [code]. А то текст ни прочитать, ни скопировать.
Твоя проблема в том, что '[', ']' и т. п. символы воспринимаются как спецсимволы регулярки, а не как часть имени файла. Еще проблема, что я не нашел правил регулярок find. Но у менять есть готовы рецепт для sed, а у find есть опция -regextype.
Вот это работает:
#!/bin/bash
find "." -type f -iname "*.ext1" | sort | while read file_ext1; do
myFILE_basename=$(basename "$file_ext1")
myFILE_name=$( echo "${myFILE_basename%.*}" | sed 's/\\/\\\\/g; s/\//\\\//g; s/\./\\./g; s/\*/\\*/g; s/\^/\\^/g; s/\$/\\$/g; s/\[/\\[/g; s/\]/\\]/g;' )
find "." -type f -regextype sed -iname "${myFILE_name}.ext2" | sort | while read file_ext2 ; do
echo "$file_ext1"
echo "$file_ext2"
done
done