我正在尝试使用awk将视频文件名称列表输出为指定格式。输出应保存到txt文件。
例如,我有以下视频文件列表:
01-20191006184929.mkv
02-2019.mkv
,所需的输出将是:
file 01-20191006184929.mkv
file 02-2019.mkv
我当前的脚本仅输出文件名。如何在每行前面添加“文件”? 那是我当前的脚本:
ls | awk '/.mkv$/' > output.txt
答案 0 :(得分:5)
您可能可以使用awk,但是使用shell命令更容易:
printf "file %s\n" *.mkv > output.txt
printf
是一个内置的shell命令,它为每个mkv文件名输出双引号之间引用的字符串。
答案 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"