Я хочу создать .txt
со всеми mp4 файлами папки, но вертикально и с
file '/root/mp4/*.mp4'
построчно. В Windows это похоже на
(for %i in (*.mp4) do @echo file '%i') > files.txt
Я не уверен, что понимаю право цели, но если Вы хотите, чтобы каждая строка читала
file '/full/path/to/filename.mp4'
Я предлагаю использовать find
сюда:
find ~+ -type f -name "*.mp4" -printf "file\t'%p'\n"
Это ищет текущий рабочий каталог (~+
расширен до полного пути bash
Расширение Тильды) для файлов, имя которых соответствует *.mp4
и печатает их в указанном формате: "файл", сопровождаемый вкладкой и именем файла, включенным в одинарные кавычки, сопровождаемые символом новой строки – если Вы хотите пространство вместо вкладки, просто займите место \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
Можно использовать:
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, поскольку я в/path/to/files / *.mp4'.