LINUX.ORG.RU

Сообщения bre

 

bash find *pattern*

Делаю скрипт, который перебирает все файлы с расширением *.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}»
- тоже ничего не получиться.

Как засунуть в паттерн имя файла, содержащее спец символы?

 ,

bre
()

скрипт BASH: почему скобки разного цвета ?

Добрый день! Пишу простенькие скрипты для обработки mp3 файлов. Создаю файлик coder:

#!/bin/bash

#выделяем только имя, отсекаем расширение
name_name=${name_basename%.*}
-почему скобка { синяя, а скобка } коричневая ?

#удаляем пробелы в именах файлов
find . -type f -iname «*.mp3» | grep ' ' | sort | while read -r f; do mv «$f» ${f// /_}; done
-почему скобка { синяя, а скобка } коричневая ?

#ищем аудио файлы
find «$source_folder» -type f \( -iname «*.flac» -or -iname «*.ape» -or -iname «*.wav» \) | sort | while read MUSICFILE do xxxxx done
-аналогично, почему \( синее, а \) коричневое ?

 , ,

bre
()

RSS подписка на новые темы