Запустите это. %
заставляет bash удалить совпадение подстановки в обратном порядке.
for F in *.csv.new; do
touch ${F%.csv.new}.err
done
Если у вас есть файлы
file1_test.csv.new
file2_test.csv.new
, вы получите
file1_test.err
file2_test.err
basename
- это легкий инструмент, позволяющий делать то, что вы просили, например
$ basename file1_test.csv.new .csv.new
file1_test
и, следовательно,
var=$(basename file1_test.csv.new).err
, где var
будет содержать file1_test.err
по желанию.