Linux

如何從 ls -l 輸出中僅剪切文件名?

  • November 14, 2019

我正在使用mylist.txt文件在 ffmpeg 的幫助下批量連接 ogg 音頻文件

mylist.txt文件的格式是

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

WhattsAPP ogg 音頻文件**的“ls -l”**輸出範例類似於

-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. 如何使用**cut、sed、awk或任何其他工具僅將****“ls -l”輸出中每行的“WhatsApp Ptt 2019-11-11 at 10.19.18 AM.ogg”**部分放入文件中命令?
  2. 如何使用單個命令在文件中的所有文件名之前添加關鍵字**“file” ?**
  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'

使用 aglob而不是使用ls文件名列表更簡單

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

/bin/ls -1

這留下了所有的粘性物:)

問題在於大多數發行版中的 ls 都被稱為“ls -la”之類的別名。你可以用“alias ls”檢查一下,看看有沒有什麼問題

同樣使用絕對路徑(使用 /bin/)將避免使用別名。

引用自:https://serverfault.com/questions/991840