【问题标题】:Appending files that end with .log to a txt file without the .log将以 .log 结尾的文件附加到不带 .log 的 txt 文件中
【发布时间】:2016-11-21 01:21:02
【问题描述】:

假设我有一堆文件:

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 文件中

【问题讨论】:

    标签: linux shell command-line


    【解决方案1】:

    我猜你想要:

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

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

    【讨论】:

    • 只输出一个到txt文件
    • 您重定向了每个echo 的输出。我建议重定向for 循环的输出,这样效率更高。 (仔细检查代码)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多