Auflisten fehlender Dateinamen in einem Muster

Auflisten fehlender Dateinamen in einem Muster
  1. Ich habe viele Dateien, die mit Zahlen beginnen und dann mit Beschreibungen durch Bindestriche versehen sind. Zum Beispiel:

    001 - awesomesauce
    216 - stillawesomesauce
    
  2. Sie sind nach Unterverzeichnissen organisiert

Wie kann ich also mithilfe basheines Skripts oder einer integrierten Funktion in diesen Verzeichnissen nachsehen, ob eine Nummer in der Reihenfolge fehlt? Ich würde also zurückmelden, dass mir im obigen Beispiel , usw. fehlen. Ich weiß, dass ich das kann, 002und es wird die Dateien auflisten und einen Fehler ausgeben, wenn es sie nicht findet, aber gibt es eine bessere Möglichkeit, NUR die fehlenden Dateien zu erhalten und dies rekursiv zu tun?128ls {000..216}\ -*

Antwort1

In einem gnuSetup könnten Sie Folgendes ausführen:

myarr=( $(find . -type f -name '[0-9][0-9][0-9]*' -printf '%f\n' | cut -c1-3 | sort -n) )
join -v1 <(seq -w ${myarr[-1]}) <(printf '%s\n' ${myarr[@]})

Alternativ zshkönnen Sie mit Folgendes versuchen:

myarr=( **/[0-9][0-9][0-9]*(.one_'REPLY=${${REPLY:t}:0:3}'_) )
mynums=( {001..$myarr[-1]} )
print -l ${mynums:|myarr}

Es extrahiert die Zahlen (die ersten drei Ziffern) aus jedem Dateinamen, sortiert sie und speichert das Ergebnis in einem Array - . Anschließend legt es ein weiteres Array - mit Zahlen von bis zum Wert des letzten Indexes (also der höchsten Zahl, die aus den Dateinamen extrahiert wurde) an und verwendet myarrdannmynums001Parametererweiterungum die Werte in myarraus der Erweiterung von zu entfernen mynums.

Antwort2

Ich hab geschriebenfindmissingein Python-Skriptdas macht das. Ich habe es auf macOS entwickelt, aber es sollte auf jeder Plattform funktionieren. Ich habe es mit Python 2.7 und 3.6 getestet.

Hier ist eine Kostprobe meines Skripts in Aktion:

$ cat sampleFile.txt | python findmissing.py -p "DSC003\.(\d+)"
12
13
14
16
17
18
22
23
24

...wird ausgegeben, wenn folgende Datei bereitgestellt wird:

Id                                  Name         Type   Size     Created
1Dgt5ZFKT3zilwPZdiPyPmhM0Y3Fz_xo8   DSC003.010   bin    1.1 GB   2018-06-12 16:57:14
16QPadXBXPGIwiRhzMFRuY7tZkdIlJ1DI   DSC003.011   bin    1.1 GB   2018-06-12 16:54:57
1zD492J3F42Azeoct82DMlXRRuWA8AUiY   DSC003.015   bin    1.1 GB   2018-06-12 17:32:12
1bah8OM_F49BNeoct8M2DlXRRuOD8AUiY   DSC003.019   bin    1.1 GB   2018-06-12 17:24:41
1eZfY4qn3Ol6w1BFafQn6YDy1uOU82NNA   DSC003.020   bin    1.1 GB   2018-06-12 17:21:46
1x-P84Jq1cyuJCW2Opvy4m_qOjOHvAKtA   DSC003.021   bin    1.1 GB   2018-06-12 17:27:16
1O4TjR8Cl31A5qxHkyVmhmukp4dofCO3t   DSC003.025   bin    1.1 GB   2018-06-12 17:36:00

verwandte Informationen