Hallo,
mein Problem:
Ich muss den Innhalt zweier Verzeichnisse nach Dateinamen und Anzahl vergleichen und die fehlenden Dateien ausgeben.
Verzeichnis A = input
Verzeichnis B = output
nach einer Bearbeitung (ocr) müssen beide Verzeichnisse die gleiche Anzahl Dateien beinnhalten,
Wichtig ist das beide Verzeichnisse die gleichen Dateinamen und deren Anzahl haben. Der Innhalt der Dateien ist uninteressant.
Sollte eine Datei nicht verarbeitet werden müsste das script diese ausgeben können
Auf Grund meiner ehr bescheidenen Shell Script kenntnisse bin ich für jeden Denkanstoss sehr dankbar.
gruß
vobie
[gelöst] Verzeichnisse nach Dateinamen vergleichen
[gelöst] Verzeichnisse nach Dateinamen vergleichen
Zuletzt geändert von vobie am 23.09.2015 15:13:53, insgesamt 1-mal geändert.
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.
Re: Verzeichnisse nach Dateinamen vergleichen
Erklaerung des Vorgehens:
1) Eine Liste aller Dateien des einen Verzeichnisses erstellen (z.B. mit find(1)) und in eine Datei schreiben
2) Das Selbe fuer das andere Verzeichnis
3) Mit comm(1) die beiden Listen vergleichen und die gewuenschten Teilmengen ausgeben lassen
Die drei Befehle sind trivial, ich haette sie dir auch gleich hingeschrieben, aber du wolltest scheinbar nur den Anstoss zum Selbermachen, was ich sehr begruesse.
1) Eine Liste aller Dateien des einen Verzeichnisses erstellen (z.B. mit find(1)) und in eine Datei schreiben
2) Das Selbe fuer das andere Verzeichnis
3) Mit comm(1) die beiden Listen vergleichen und die gewuenschten Teilmengen ausgeben lassen
Die drei Befehle sind trivial, ich haette sie dir auch gleich hingeschrieben, aber du wolltest scheinbar nur den Anstoss zum Selbermachen, was ich sehr begruesse.
Use ed once in a while!
Re: Verzeichnisse nach Dateinamen vergleichen
Dateien, die nur in einem der beiden Verzeichnisse vorkommen, kann man mit diff filtern.vobie hat geschrieben:Hallo,
mein Problem:
Ich muss den Innhalt zweier Verzeichnisse nach Dateinamen und Anzahl vergleichen und die fehlenden Dateien ausgeben.
Verzeichnis A = input
Verzeichnis B = output
nach einer Bearbeitung (ocr) müssen beide Verzeichnisse die gleiche Anzahl Dateien beinnhalten,
Wichtig ist das beide Verzeichnisse die gleichen Dateinamen und deren Anzahl haben. Der Innhalt der Dateien ist uninteressant.
Sollte eine Datei nicht verarbeitet werden müsste das script diese ausgeben können
Auf Grund meiner ehr bescheidenen Shell Script kenntnisse bin ich für jeden Denkanstoss sehr dankbar.
gruß
vobie
Wenn du Debian auf deutsch installiert hast:
diff -r input output | grep "Nur in"
Wenn du Debian auf english installiert hast:
diff -r input output | grep "Only in"
-
- Beiträge: 287
- Registriert: 05.02.2013 19:47:41
Re: Verzeichnisse nach Dateinamen vergleichen
Hier ist ein Script aus meinem Werkzeugkasten:
dwdiff zeigt Unterschiede farblich an!
Code: Alles auswählen
Fdwd ()
{
[ "$1" = "-h" -o "$1" = "--help" ] &&
echo "\n\t $FUNCNAME [-r] dir1 dir2 # dwdiff 2 dirs [recursive]\n" && return
local CMD="ls -l --almost-all --indicator-style=slash --group-directories-first --color=never ${LS_HAS_JOURNAL+-j.}"
[ "$1" == "-r" ] && CMD="$CMD --recursive" && shift
! [ -d "$1" -a -d "$2" ] && echo not 2 dirs && return
echo "$CMD '$1' '$2' + dwdiff"
ex
local D1=`$CMD --time-style='+%d.%m. %Y %T' $1`
local D2=`$CMD --time-style='+%d.%m. %Y %T' $2`
\dwdiff -c -C0 \
<(echo "$D1" | perl -nE 'say "$2|| $1$4" if /^(?:\S+\s+){4}(\S+\s+)((\S+\s+){3})(.*)/')\
<(echo "$D2" | perl -nE 'say "$2|| $1$4" if /^(?:\S+\s+){4}(\S+\s+)((\S+\s+){3})(.*)/')
echo
if [ "$LS_HAS_JOURNAL" ]; then
echo "$D1" | tail -1
echo "$D2" | tail -1
fi
}
alias ex='(for i in {1..25};do echo;done)'
-der_linux_cowboy --- Besser werden! ... f*** w$$
Re: Verzeichnisse nach Dateinamen vergleichen
Vielen Danke euch allen, ihr habt mir sehr geholfen.
Alle Varianten haben funktioniert.
Gruß
vobie
Alle Varianten haben funktioniert.
Gruß
vobie
Es gibt keine dummen Fragen. Aber leider viele dumme Antworten.