如何将awk命令输出为特定格式并保存到文件中?

时间:2019-10-12 10:35:52

标签: shell awk

我正在尝试使用awk将视频文件名称列表输出为指定格式。输出应保存到txt文件。

例如,我有以下视频文件列表:

01-20191006184929.mkv
02-2019.mkv

,所需的输出将是:

file 01-20191006184929.mkv
file 02-2019.mkv

我当前的脚本仅输出文件名。如何在每行前面添加“文件”? 那是我当前的脚本:

ls | awk '/.mkv$/' > output.txt

4 个答案:

答案 0 :(得分:5)

您可能可以使用awk,但是使用shell命令更容易:

printf "file %s\n" *.mkv > output.txt

printf是一个内置的shell命令,它为每个mkv文件名输出双引号之间引用的字符串。

注意:Don't parse ls

答案 1 :(得分:1)

我们不应该解析ls的输出,可以尝试使用for循环。

for file_name in *.mkv
do
   echo "file $file_name"
done

答案 2 :(得分:1)

并使用awk:

$ awk 'BEGIN{for(i=1;i<ARGC;i++)print "file",ARGV[i]}' *.mkv

输出:

file 01-20191006184929.mkv
file 02-2019.mkv

解释:

$ awk '
BEGIN {                       # no need to touch the files
    for(i=1;i<ARGC;i++)       # for all parameter filenames
        print "file",ARGV[i]  # print
}' *.mkv                      # filename set goes here

答案 3 :(得分:1)

只是为了好玩:

$ stat -c "file %n" *mkv
$ find -name '*mkv' -printf "name %p\n"