У меня есть файл с именем: f{number}.ext

В другом каталоге существует список директорий:

  • 001
  • 002
  • 003
  • ....

Каждый из этих каталогов содержит список файлов:

  • f001.ext
  • f002.ext
  • ...

Имена файлов повторяются в каждом каталоге, но это разные файлы. Мне нужно найти этот файл (f{number}.ext) в указанном списке каталогов и получить имя корневого каталога - например, 003 - или распечатать сообщение, если файл не найден.

Могу ли я использовать fdupes для этой операции?

1 ответ1

0

Вы можете использовать этот скрипт:

#!/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 вернет имя файла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .