Filenames
如何在一行中獲取文件名及其絕對路徑?
我想逐行列出文件夾中的所有文件及其各自的絕對路徑,如下所示,
filename1 /home/.../file1 filename2 /home/.../file2 filename3 /home/.../file3
我試過了
find $(pwd) -type f
,但它只給出了路徑。
使用 GNU
find
:find "$PWD" -type f -printf '%f %h/%f\n'
%f
刪除了所有前導目錄的文件名(僅最後一個元素)。%h
文件名的前導目錄(除了最後一個元素)。如果文件名不包含斜杠(因為它在目前目錄中),則 %h 說明符擴展為 `.’。
帶標準
find
:find "$PWD" -type f -exec sh -c ' for pathname do printf "%s\t%s\n" "${pathname##*/}" "$pathname" done' sh {} +
這將列印目前目錄中或下方所有文件的製表符分隔列表。第一列將包含文件的文件名,第二列將包含文件相對於目前目錄絕對路徑(
$PWD
搜尋路徑中的 )的路徑名。這是通過將批量找到的路徑名提供給一個簡短的內聯腳本來完成的,該腳本只是以首選格式輸出名稱。參數替換
${pathname##*/}
擴展為 的值,$pathname
直到最後一個/
被刪除。請注意,包含換行符的文件名將顯示在多行中,並且很難正確區分包含製表符的文件名。假設結果是用於查看而不是解析,那可能沒問題。