我目录中有许多文本文件。我想在目录中每个扩展名为 .txt 的文本文件的最后一行(内容)末尾附加/添加 * 如何在 Ubuntu 20.10 中通过单个操作实现此目的?
我之所以问这个问题,是因为我目前正在处理 .txt 和 .pgn 文件。如果我必须将 .txt 转换为 .pgn 文件,那么最后一行末尾需要 *、1/2-1/2、1-0 或 0-1(向机器表示得分或游戏结束),否则我将无法将它们转换为 .pgn 文件。此外,即使我通过另存为将它们转换为 .pgn 文件,那么该文件在机器二进制文件中仍然是不完整的且不可读的。机器将无法将其识别为得分或结束。
答案1
这个应该能够对你的所有.txt文件执行此操作。
从所有 .txt 文件所在的当前文件夹运行:
find . -maxdepth 1 -iname "*.txt" -print0 | xargs -L1 -0 sed -i '$a*'
该命令将找到所有带有空格的文件,然后将空格附加*
到该文件夹中找到的所有.txt 文件的最后一行。
希望这可以帮助!
答案2
这可以完成文件数量较少(约 1000 个文件):
echo "*" | tee -a *.txt >/dev/null
或者使用它大量文件:
for f in *.txt
do
echo "*" >> "$f"
done
从包含文件的目录运行上述命令.txt
。
答案3
您可以更进一步使用
files
命令来帮助您确定哪些文件是 ASCII 文本。
为此,我在主目录中创建了一个名为 addstar.sh 的小 shell 脚本
file $1 | grep ": ASCII text" | sed "s/: ASCII text.*//g" | echo "*" >> $1
与 find 命令结合使用,即可找到解决方案
find -maxdepth 1 -mindepth 1 -name "*.txt" -exec ~/addstar.sh {} \;
-maxdepth 和 -mindepth 参数将其保留在单个目录中。
问候,mondotofu
PS 别忘了
chmod +x ~/addstar.sh
PPS 请记住,文本有很多种。以下是我主目录中文件的快速扫描。
$ file * | grep "text"
addstar.sh: ASCII text
agent-install.log: UTF-8 Unicode text, with CRLF, CR, LF line terminators, with escape sequences
cantcopy.log: UTF-8 Unicode text, with very long lines
conda_install_altair.log: ASCII text
conda_install_altair.log2: ASCII text
conda_install_altair.log2~: ASCII text
conf.yaml: ASCII text
files.list: ASCII text
fun_reports.txt: ASCII text
release-notes.html: HTML document, UTF-8 Unicode text
stacktrace_20200724-1656.txt: ASCII text, with CRLF, LF line terminators
T480_config-backup.sh: ASCII text
您可能需要调整一次性命令,其中我仅针对 ASCII 文本进行 grep,并查看是否需要调整它以输入其他类型的文本输出。