2016-04-21 4 views
0

Ich möchte eine Reihe von Dateien (* .txt) von einem Verzeichnis zu einem anderen in Ubuntu kopieren. Ich möchte sie in der Größe reduzieren, also verwende ich Kopf, um die ersten 100 Zeilen von jedem zu bekommen.Wie kopiere ich den Anfang mehrerer Dateien in Linux?

Ich möchte, dass die neuen Dateien ihren ursprünglichen Namen behalten, aber im Unterverzeichnis small/ sind. Ich habe versucht:

head -n 100 *.txt > small/*.txt 

aber dies erzeugt eine Datei *.txt genannt. Ich habe auch versucht:

head -n 100 *.txt > small/ 

aber das gibt Is a directory Fehler.

Es muss einfach richtig sein, aber ich bin ziemlich schlecht bei Linux. Jede Hilfe wird sehr geschätzt.

Antwort

1

for f in *.txt; do 
    head -n 100 $f > small/$f 
done 
+1

sein kann gut tun Zitat '$ f' auf Fälle zu verhindern, wenn der Dateiname Leerzeichen enthält. Siehe meine Antwort. – fedorqui

3

Sie erhalten eine Schleife stattdessen erstellen müssen:

for file in *.txt; do 
    head -n 100 "$file" > small/"$file" 
done 

Diese Schleife durch alle .txt Dateien einen head -n 100 in allen von ihnen durchführen und im small/ Verzeichnis in eine neue Datei ausgibt. Versuchen

Verwandte Themen