У меня есть файл с именем:f{number}.ext
В другом каталоге существует список каталогов:
- 001
- 002
- 003
- ....
Каждый из этих каталогов содержит список файлов:
- f001.ext
- f002.ext
- ...
Имена файлов повторяются в каждом каталоге, но это разные файлы. Мне нужно найти этот файл ( f{number}.ext
) в указанном списке каталогов и получить имя корневого каталога — например 003
— или вывести сообщение, если файл не найден.
Могу ли я использовать fdupes
для этой операции?
решение1
Вы можете использовать этот bash-скрипт:
#!/bin/bash
for iNumb in '001' '002' '003' '004' '005'; do
myFile=`ls */f${iNumb}.ext 2>&1`
if [ "${myFile:0:2}" == "ls" ]
then
echo "File f${iNumb}.ext: File not found"
else
echo "File f${iNumb}.ext:" `dirname ${myFile}`
fi
done
- Речь
2>&1
идет об ошибке сообщения ls, когда файл не найден (напримерls: cannot access */f005.ext: No such file or directory
, ). - Проверка
if
того, начинается ли строкаmyFile
сls
(тогда у нас была ошибка) или нет (тогда мы нашли файл). dirname
возвращает каталог.basename
вернет имя файла.