Suchen Sie nach doppelten Dateien in einem anderen Verzeichnis

Suchen Sie nach doppelten Dateien in einem anderen Verzeichnis

Ich habe eine Datei mit dem Namen:f{number}.ext

In einem anderen Verzeichnis gibt es eine Liste von Verzeichnissen:

  • 001
  • 002
  • 003
  • ....

Jedes dieser Verzeichnisse enthält eine Liste von Dateien:

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

Die Dateinamen wiederholen sich in jedem Verzeichnis, aber es handelt sich um unterschiedliche Dateien. Ich muss diese Datei ( f{number}.ext) in der referenzierten Verzeichnisliste finden und den Namen des Stammverzeichnisses abrufen – z. B. 003– oder eine Meldung ausgeben, wenn die Datei nicht gefunden wird.

fdupesKann ich es für diesen Vorgang verwenden ?

Antwort1

Sie könnten dieses Bash-Skript verwenden:

#!/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
  • Das 2>&1befasst sich mit der Fehlermeldung von ls, wenn die Datei nicht gefunden wird (zB ls: cannot access */f005.ext: No such file or directory).
  • Der ifTest zeigt, ob der String myFilemit einem beginnt ls(dann liegt ein Fehler vor) oder nicht (dann haben wir eine Datei gefunden).
  • dirnamegibt das Verzeichnis zurück. basenamewürde den Dateinamen zurückgeben.

verwandte Informationen