LINUX.ORG.RU

История изменений

Исправление 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