如何使用 UNIX 工具从文件夹中的所有 .txt 文件中删除所有换行符?

How to remove all newlines from all .txt files in a folder, using UNIX tools?

我在一个文件夹中找到了大约 300 个 (.txt) 文件,这些文件的“普通文本”格式为 /n。我希望这些文件中的所有文本都位于第一行,因为我管道中的程序需要这样做。

示例:

(是:)
GTCGCAGCCG
TCGGCTCGGA
TCTCGGCCTC

(应该是:)
GTCGCAGCCGTCGGCTCGGATCTCGGCCTC

如果我能全部覆盖,文件名保持不变,那就方便了。我还不想破解 python,有没有简单的 UNIX 工具/命令行方法?


我之前来过这里: How do I remove newlines from a text file?

但是如何对我文件夹中的所有 300 个文件执行此操作?如果我使用 tr -d '\n' < *.txt 它会告诉我:“bash: *.txt: 模糊重定向”

您需要一个 shell 循环来依次处理每个文件。请注意,ed 是比 tr 更好的选择,因为它设计用于处理文件,而不是流。

for f in *.txt; do
    printf '%%j\nwq\n' | ed "$f"
done

%jed 命令连接缓冲区中的所有行; %% 在这里是必要的,以使 printf 输出文字 %wq 是将更改写回文件的命令。 (q 是可选的,因为 ed 无论如何都会在其脚本结束后退出。)