Как мне скопировать начало нескольких файлов в Linux?

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

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

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

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

head -n 100 *.txt > small/

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

Это должно быть легко, правда, но я довольно плохо разбираюсь в Linux. Буду признателен за любую оказанную помощь.

2 ответа

Решение

Пытаться

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

Вам придется создать цикл вместо:

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

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

Другие вопросы по тегам