linux - 将以 .log 结尾的文件附加到没有 .log 的 txt 文件

标签 linux shell command-line

假设我有一堆文件:

blar23123.log
blar23131.log
blar11111.txt
blar55532.log

我想把所有以.log结尾的都输出到一个没有.log的文本文件中。

预期输出(文本文件):

 blar23123
 blar23131
 blar55532

我有一个很糟糕的方法来做这件事,我创建了一个没有 .log 的新的单独文件。但是当我处理 100000 个文件的数据集时,这可能是一项详尽的工作并且需要一段时间。

我一直在做什么:

for file in *.log; do cp -- "$file" "${file%%.log}"; done

然后我一直在列出它们,然后将它们附加到一个 txt 文件中

最佳答案

我猜你想要:

for file in *.log ; do
    echo "${file%.*}"
done > output.txt

${file%.*} 是所谓的 parameter expansion .在这种情况下,它会从 $file 的末尾删除一个点后跟任意字符的最短匹配项。这将有效地删除文件扩展名。

关于linux - 将以 .log 结尾的文件附加到没有 .log 的 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38436638/

相关文章:

command-line - 无法更新 ThemeKit, "Access is denied"

linux - 用于运行和测试 ssh 命令的 Unix 编辑器

linux - 我如何编写一个 bash 脚本来从文件中提取所有 http ://whatever. com/something

linux - 如何从字符串中剪切字符并将其放在最后 - 在 shell 中

macos - 如何让 OS X Lion 上的 bash 在选项卡完成期间忽略 .DS_Store 文件?

php - 如何计算php文件中javascript的行数?

linux - 尽可能晚地在 Linux 启动时运行脚本

python - 您如何跨多个操作系统手动告诉 Python 在脚本本身中使用哪个版本?

linux - 将 shell 变量传递给系统用户

bash - 在 shell 脚本中使用 Perl 单行代码