我有一個包含文件的多個完整路徑刪除存儲在一個文件中FULLPATH的路徑前綴
/home/pi/1.txt
/home/pi/2.txt
/home/pi/3.txt
,我想每一個文件的基本名稱
1.txt
2.txt
3.txt
我只知道我可以得到每一行和使用命令
basename
是否有可能實現我的目標更簡單?謝謝。
我有一個包含文件的多個完整路徑刪除存儲在一個文件中FULLPATH的路徑前綴
/home/pi/1.txt
/home/pi/2.txt
/home/pi/3.txt
,我想每一個文件的基本名稱
1.txt
2.txt
3.txt
我只知道我可以得到每一行和使用命令
basename
是否有可能實現我的目標更簡單?謝謝。
@try:
awk -F"/" '{print $NF}' Input_file
製作 「/」 作爲字段分隔符和打印每一行的最後一個字段。
完美!正是我在找什麼!謝謝。 – berlloon
如果您認爲如果幫助了您,您可以選擇正確的答案。 – RavinderSingh13
我想出了最簡單的方法是這樣的:
basename -a $(<foo.txt)
哪些工作,因爲該進程替換$()
是文件的重定向輸出,然後將其拆分成,因爲字分裂的多個參數。基本名稱帶有多個參數-a
。
請注意,如果文件中的路徑名中存在空格(由於所述分詞),這不起作用。
僅使用殼工具A液:
readarray -t arr <file.txt
echo "${arr[@]##*/}"
這假設每個文件是一條線(即使有空格)。帶有換行符的文件名將失敗,因爲文件中需要一些其他結構。
非常感謝你,這個命令部分解決了我的問題。文件名與空格分開,我的問題可以通過用新行替換空格來完全解決。命令是「sed's/\ s \ +/\ n/g'tmp2」 – berlloon
是將它與簡單的SED/AWK ......是最終目標,或者你需要得到基本名稱後做什麼? – Sundeep