如何从 ls -l 输出中剪切文件名?

如何从 ls -l 输出中剪切文件名?

我正在使用 ffmpeg 批量连接 ogg 音频文件我的列表.txt文件

格式我的列表.txt文件是

file '/path/to/file1.wav'
file '/path/to/file2.wav'
file '/path/to/file3.wav'

我的‘ls -l’WhattsAPP ogg 音频文件的输出样本类似于

-rw-rw-r-- 1 work work  64112 Nov 14 18:43 'WhatsApp Ptt 2019-11-11 at 10.19.18 AM.ogg'
-rw-rw-r-- 1 work work  24616 Nov 14 18:43 'WhatsApp Ptt 2019-11-11 at 10.19.50 AM.ogg'
-rw-rw-r-- 1 work work  26166 Nov 14 18:43 'WhatsApp Ptt 2019-11-11 at 10.20.18 AM.ogg'
-rw-rw-r-- 1 work work  69895 Nov 14 18:43 'WhatsApp Ptt 2019-11-11 at 10.21.05 AM.ogg'
-rw-rw-r-- 1 work work  85416 Nov 14 18:43 'WhatsApp Ptt 2019-11-11 at 10.27.09 AM.ogg'
  1. 我如何只获取“WhatsApp Ptt 2019-11-11 上午 10.19.18.ogg”每行的部分‘ls -l’输出使用cut、sed、awk或者使用单个命令将任何其他工具放入文件中?

  2. 如何添加关键字“文件”使用单个命令在文件中的所有文件名之前?

  3. 过程 1. 和 2. 可以合并为一个命令吗?

最终文件的内容需要如下所示:

file 'WhatsApp Ptt 2019-11-12 at 10.21.59 AM.ogg'
file 'WhatsApp Ptt 2019-11-12 at 10.29.45 AM.ogg'
file 'WhatsApp Ptt 2019-11-12 at 10.31.52 AM.ogg'
file 'WhatsApp Ptt 2019-11-12 at 9.31.38 AM.ogg'

答案1

使用glob而不是 来ls处理文件名列表更简单

for f in *; do
  echo file \'$f\'
done

答案2

/bin/ls -1

这样就把所有的粘性物质都去掉了:)

问题是,大多数发行版中的 ls 都别名为“ls -la”。您可以使用“alias ls”检查,看看是否会出现任何问题

另外,使用绝对路径(带有 /bin/)将避免使用别名。

相关内容