Linux
如何從 ls -l 輸出中僅剪切文件名?
我正在使用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'
- 如何使用**cut、sed、awk或任何其他工具僅將****“ls -l”輸出中每行的“WhatsApp Ptt 2019-11-11 at 10.19.18 AM.ogg”**部分放入文件中命令?
- 如何使用單個命令在文件中的所有文件名之前添加關鍵字**“file” ?**
- 程序 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'
使用 a
glob
而不是使用ls
文件名列表更簡單for f in *; do echo file \'$f\' done
/bin/ls -1
這留下了所有的粘性物:)
問題在於大多數發行版中的 ls 都被稱為“ls -la”之類的別名。你可以用“alias ls”檢查一下,看看有沒有什麼問題
同樣使用絕對路徑(使用 /bin/)將避免使用別名。