将 MP4 按“文件‘*.mp4’”列出到 .txt 中

将 MP4 按“文件‘*.mp4’”列出到 .txt 中

我想创建一个.txt包含所有 mp4 文件的文件夹,但垂直放置,并且

file '/root/mp4/*.mp4'

逐行执行。在 Windows 中,就像

(for %i in (*.mp4) do @echo file '%i') > files.txt

答案1

我不确定我理解的目标是否正确,但如果你想要每一行都读

file '/full/path/to/filename.mp4'

我建议使用find这种方式:

find ~+ -type f -name "*.mp4" -printf "file\t'%p'\n"

这将在当前工作目录 (~+由 的 Tilde Expansion 扩展为完整路径bash) 中搜索名称匹配的文件*.mp4,并以指定的格式打印它们:“file”后跟一个制表符,文件名括在单引号中,后跟一个换行符 - 如果您想要空格而不是制表符,只需用\t空格替换即可。如果您想将输出存储在文件中files.txt,只需添加>files.txt到命令行即可。请注意,files.txt如果您想要,这将默认覆盖任何现有的附加到文件使用>>files.txt

示例输出

$ find ~+ -type f -name "*.mp4" -printf "file\t'%p'\n"
file    '/home/dessert/test/a.mp4'
file    '/home/dessert/test/b.mp4'
$ find ~+ -type f -name "*.mp4" -printf "file\t'%p'\n" >files.txt
$ cat files.txt 
file    '/home/dessert/test/a.mp4'
file    '/home/dessert/test/b.mp4'

但是如果你想files.txt包含输出file 'some.mp4',你可以file直接使用:

file *.mp4 >files.txt     # with relative paths
file ~+/*.mp4 >files.txt  # with absolute paths

答案2

您可以使用:

for i in ./*.mp4; do echo "file" \'$(realpath ${i#*\/})\' >> files.txt; done

如果不需要file在每个文件名前面,则可以使用:

ls path/to/files/*.mp4 > files.txt

第一个命令的结果:

file '/home/george/Documents/askubuntu/disk_use.txt'
file '/home/george/Documents/askubuntu/efi_info.txt'
file '/home/george/Documents/askubuntu/empty.txt'
file '/home/george/Documents/askubuntu/fam.txt'

笔记:

  • 我使用了.txt文件,你的也会使用.mp4
  • 这是从感兴趣的文件夹运行的,如果您需要定位另一个文件夹,请更改行for i in ./*.mp4tp for i in /path/to/files/*.mp4`。

答案3

在 ubuntu 20 上尝试并测试的终端中运行此命令

printf "file %s\n" *.mp4 > files.txt

相关内容