2016-04-21 2 views
0

Я хочу скопировать кучу файлов (* .txt) из одной директории в другую в Ubuntu. Я хочу уменьшить их размер, поэтому я использую голову, чтобы получить первые 100 строк каждого.Как скопировать начало нескольких файлов в Linux?

Я хочу, чтобы новые файлы сохраняли свои исходные имена, но попали в подкаталог small/. Я пробовал:

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

, но это создает один файл с именем *.txt. Я также попытался:

head -n 100 *.txt > small/ 

, но это дает Is a directory ошибку.

Это должно быть легко, но я довольно плохой в Linux. Любая помощь очень ценится.

ответ

1

Попробуйте

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

может быть хорошо делать цитаты '$ f', чтобы предотвратить случаи, когда имя файла содержит пробелы. См. Мой ответ. – fedorqui

3

Вы должны создать цикл вместо:

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

Это перебирает все файлы .txt выполнения head -n 100 во всех из них и вывод в новый файл в каталоге small/.

Смежные вопросы