我一直尝试从大约 50 个文本文件中删除第二行和第三行。
我需要保留标题但删除行“1”和“2”,这意味着我需要删除每个文本文件的第二行和第三行。我一直在尝试使用:
sed -i.bak'2,3d'*.txt
但只删除文件夹中第一个文件的行。如何才能让此操作应用于文件夹中的所有文件?
答案1
这里有两种方法,选择取决于您有多少个文件、名称有多长以及文件名是否有“奇怪的字符”。
for i in *.txt ; do
sed -i.bak '2,3d' "$i"
done
或者,复杂的情况:
find . -maxdepth 1 -type f -name '*.txt' -print0 | \
xargs -0 -r -n 1 sed -i.bak '2,3d'