Linux 将以.log结尾的文件附加到不带.log的txt文件
假设我有一堆文件:Linux 将以.log结尾的文件附加到不带.log的txt文件,linux,shell,command-line,Linux,Shell,Command Line,假设我有一堆文件: blar23123.log blar23131.log blar11111.txt blar55532.log 我想将所有以.log结尾的文件输出到一个文本文件中,而不输出.log 预期输出(文本文件): blar23123 blar23131 blar55532 for file in *.log; do cp -- "$file" "${file%%.log}"; done 我有一个非常糟糕的方法来做这件事,我创建了一个新的文件,一个没有.log的独立文件。但
blar23123.log
blar23131.log
blar11111.txt
blar55532.log
我想将所有以.log结尾的文件输出到一个文本文件中,而不输出.log
预期输出(文本文件):
blar23123
blar23131
blar55532
for file in *.log; do cp -- "$file" "${file%%.log}"; done
我有一个非常糟糕的方法来做这件事,我创建了一个新的文件,一个没有.log的独立文件。但是,由于我正在处理100000个文件的数据集,这可能是一项详尽的工作,需要一段时间
我一直在做的事情:
blar23123
blar23131
blar55532
for file in *.log; do cp -- "$file" "${file%%.log}"; done
然后我一直在列出它们,然后将它们附加到一个txt文件中,我想你想要:
for file in *.log ; do
echo "${file%.*}"
done > output.txt
${file%.*}
就是所谓的。在这种情况下,它将从$file
的末尾删除点的最短匹配,后跟任意字符。这将有效地删除文件扩展名。只向txt文件输出一个。您重定向了每个echo的输出。我建议为
循环重定向的输出,这样效率更高。(仔细检查代码)