![Auflisten fehlender Dateinamen in einem Muster](https://rvso.com/image/109253/Auflisten%20fehlender%20Dateinamen%20in%20einem%20Muster.png)
Ich habe viele Dateien, die mit Zahlen beginnen und dann mit Beschreibungen durch Bindestriche versehen sind. Zum Beispiel:
001 - awesomesauce 216 - stillawesomesauce
Sie sind nach Unterverzeichnissen organisiert
Wie kann ich also mithilfe bash
eines 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, 002
und 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?128
ls {000..216}\ -*
Antwort1
In einem gnu
Setup 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 zsh
kö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 myarr
dannmynums
001
Parametererweiterungum die Werte in myarr
aus der Erweiterung von zu entfernen mynums
.
Antwort2
Ich hab geschriebenfindmissing
ein 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