2016-11-28 8 views
0

Ich habe ein interaktives Datei Sortierskript, das eine Reihe von filelist für jedes Verzeichnis ausgibt, das es für die sortierte Ausgabe erstellt.Wie verkette ich den Inhalt der Dateiliste

Wie verkette ich den Inhalt aller filelist zu einer Übersichtsdatei auf meinem Desktop.

Mein Code funktioniert gut, außer für diese spezielle Aufgabe.

#!/bin/bash 
read -p "Good Morning, Please enter your file type name for sorting [ENTER]:" all_extensions 
if cd /Users/christopherdorman/desktop 
    then while read extension 
     do destination="folder$extension" 
     mkdir -p "$destination" 
     mv -v unsorted/*."$extension" "$destination" 
     done <<< "${all_extensions// /$'\n'}" 
     mkdir -p foldermisc 
     if mv -v unsorted/* "foldermisc" 
     then echo "Good News, the rest of Your files have been successfully processed" 
     fi 
    for i in folder*/; do 
     ls -S "$i" > "${i}filelist” 
     cat > "${i}filelist” | tee ~/desktop/summary.txt 
    done 
fi 

Antwort

1

Diese Modifikation kürzt die summary.txt Datei und führt dann ein cat jede Datei in der Zusammenfassungsdatei.

#!/bin/bash 
read -p "Good Morning, Please enter your file type name for sorting [ENTER]:" all_extensions 
if cd /Users/christopherdorman/desktop 
    then while read extension 
     do destination="folder$extension" 
     mkdir -p "$destination" 
     mv -v unsorted/*."$extension" "$destination" 
     done <<< "${all_extensions// /$'\n'}" 
     mkdir -p foldermisc 
     if mv -v unsorted/* "foldermisc" 
     then echo "Good News, the rest of Your files have been successfully processed" 
     fi 
    truncate --size 0 ~/desktop/summary.txt 
    for i in folder*/; do 
     ls -S "$i" > "${i}filelist" 
     cat "${i}filelist" >> ~/desktop/summary.txt 
    done 
fi 
+0

versucht, den Code auszuführen. Dies gibt weder die Dateiliste aus, noch gibt es irgendeine Ausgabe auf dem Desktop. –

+0

Welche Ausgabe erwarten Sie in Ihrer 'summary.txt' Datei? – eddiem

+0

Wenn ich 4 Dateilisten habe. Eins in jedem der 4 Ordner auf meinem Desktop, die Zusammenfassung.txt ist eine Kollatierung des Inhalts dieser 4 Dateien. Ich will den Inhalt zu einer Datei verkettet –

0

Es gibt eine ungerade Zeichen (kein ", ähnlich, aber nicht gleich) in beide diese Zeilen:

ls -S "$i" > "${i}filelist” 
    cat > "${i}filelist” | tee ~/desktop/summary.txt 

wechseln beide zu diesem one (Kopieren und Einfügen):

ls -S "$i" > "${i}filelist" 
    cat "${i}filelist" | tee -a "summary.txt" 

Durch Entfernen der > wird das Löschen vermieden "${i}filelist”.
Durch Hinzufügen einer -a wird das T-Stück append in eine vorhandene Datei umgewandelt.

Oder, wenn Sie möchten, verwenden Sie einfach die folgende Zeile:

ls -S "$i" | tee -a "${i}filelist" "summary.txt" 

Das ganze Skript sollte wie folgt aussehen:

#!/bin/bash 
mydesktop=/Users/christopherdorman/desktop 
read -p "Good Morning, Please enter your file type name for sorting [ENTER]:" all_extensions 
if cd "$mydesktop" 
then 
    while read extension 
    do  destination="folder$extension" 
      mkdir -p "$destination" 
      mv -v unsorted/*."$extension" "$destination" 
    done <<< "${all_extensions// /$'\n'}" 

    mkdir -p foldermisc 

    if  mv -v unsorted/* "foldermisc" 
    then echo "Good News, the rest of Your files have been successfully processed" 
    fi 

    for i in folder*/ 
    do  ls -S "$i" | tee -a "${i}filelist" "summary.txt" 
    done 
fi 
+0

werde dies jetzt versuchen und zurück in wenigen Minuten, danke –

+0

Angst nicht, ich bekomme eine leere summary.txt und die Dateiliste tun nicht in den Ordnern angezeigt. –

+0

muss ich abschneiden –