Gibt es fertige Tools zum Überprüfen auf Lücken in der Liste monoton zunehmender Dateinamen?

Gibt es fertige Tools zum Überprüfen auf Lücken in der Liste monoton zunehmender Dateinamen?

Ich habe mehrere hundert Verzeichnisse mit jeweils Millionen von Dateien erhalten. Beispiel:

DirA
+----+ A_000001.txt
     |
     + A_000002.txt
     |
     + ... etc..

Ich möchte sicherstellen, dass die Dateien für jede Nummer von 000001 bis 999999 vorhanden sind. Wenn die Datei also A_678123.txtfehlt, sollte das Tool dies melden. Derzeit erstelle ich ein Bit-Array, das dann eine lsAusgabe erstellt und für jede Bitposition, die der analysierten Dateinummer entspricht, eine 1 setzt.

Gibt es ein Tool (oder eine Kombination von Tools), das mein gehacktes Python-Skript ersetzen kann?

Antwort1

seqEine Möglichkeit besteht darin, eine Kombination aus , sort, und zu verwenden uniq:

# Get a list of all the files in DirA
cd DirA
ls . > files.txt
# Get a list of all expected files
seq -f "A_%06.0f.txt" 0 999999 > expected.txt
# Find unique entries
sort files.txt expected.txt | uniq -u

Möglicherweise müssen Sie die Argumente anpassen, damit seqsie mit den Namen Ihrer Dateien übereinstimmen.

Sobald dies funktioniert, können Sie versuchen, es ohne die Verwendung temporärer Dateien durchzuführen:

cd DirA
sort <(ls .) <(seq -f "A_%06.0f.txt" 0 999) | uniq -u

Wenn Sie bereit sind, alle Ihre Verzeichnisse zu durchsuchen:

for d in ./*/; do
  pushd "$d"
  sort <(ls .) <(seq -f "A_%06.0f.txt" 0 999) | uniq -u
  popd
done

Sie sollten eine Ausgabe ähnlich dieser erhalten, die jedes Verzeichnis und jede fehlende Datei in diesem Verzeichnis auflistet:

./DirA/
A_000371.txt
./DirB/
A_000881.txt
./DirC/
A_000101.txt
A_000191.txt

verwandte Informationen