我想创建一个.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 ./*.mp4
tp for i in /path/to/files/*.mp4`。
答案3
在 ubuntu 20 上尝试并测试的终端中运行此命令
printf "file %s\n" *.mp4 > files.txt