Найти дубликат файла в другом каталоге

Найти дубликат файла в другом каталоге

У меня есть файл с именем: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вернет имя файла.

Связанный контент