如何在Linux中复制多个文件的开头?

如何在Linux中复制多个文件的开头?,linux,file,ubuntu,unix-head,Linux,File,Ubuntu,Unix Head,我想在Ubuntu中将一堆文件(*.txt)从一个目录复制到另一个目录。我想缩小它们的尺寸,所以我用head来获得每一行的前100行 我希望新文件保留其原始名称,但位于子目录small/中。 我试过: head -n 100 *.txt > small/*.txt 但这会创建一个名为*.txt的文件。 我也尝试过: head -n 100 *.txt > small/ 但是这给了一个目录错误 这一定很容易,对吧,但我在Linux方面相当差。 非常感谢您的帮助。您必须创建一个循环:

我想在Ubuntu中将一堆文件(*.txt)从一个目录复制到另一个目录。我想缩小它们的尺寸,所以我用head来获得每一行的前100行

我希望新文件保留其原始名称,但位于子目录
small/
中。 我试过:

head -n 100 *.txt > small/*.txt
但这会创建一个名为
*.txt
的文件。 我也尝试过:

head -n 100 *.txt > small/
但是这给了
一个目录
错误

这一定很容易,对吧,但我在Linux方面相当差。
非常感谢您的帮助。

您必须创建一个循环:

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

这将遍历所有
.txt
文件,在所有文件中执行
head-n 100
,并输出到
small/
目录中的新文件中。

您必须创建一个循环:

for file in *.txt; do
    head -n 100 "$file" > small/"$file"
done
这将遍历所有
.txt
文件,在所有文件中执行
head-n 100
,并输出到
small/
目录中的新文件中。

试试看

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


最好使用quote
$f
,以防止文件名包含空格。请参阅我的答案。最好引用
$f
,以防止文件名包含空格。看看我的答案。