如何在Linux上使用bash指令碼替換檔名中的空格?


考慮一下我的本地機器上的一個目錄,它看起來像這樣:

immukul@192 dir1 % ls -ltr
total 0
-rw-r--r-- 1 immukul staff 0 Jul 3 20:44 sample code.txt
-rw-r--r-- 1 immukul staff 0 Jul 3 20:44 sample code with love.txt

在名為dir1的上述目錄中,存在兩個.txt檔案,這兩個檔案的檔名中都有空格,我們需要使用Linux上的bash指令碼來替換這些空格。

為了實現我們的目標,我們首先必須知道我們可以透過Linux命令遍歷檔案並列印其名稱,然後我們可以稍後修改該命令以將檔名中的空格替換為下劃線,並獲得所需輸出。

要列印檔名中的空格,我們只需要在終端中鍵入以下命令:

for f in *.txt; do echo ${f}; done;

輸出

immukul@192 dir1 % for f in *.txt; do echo ${f}; done;

sample code with love.txt
sample code.txt

現在,我們只需要修改第一個分號後的部分,以便我們可以用下劃線替換空格。

該命令是:

for file in *.txt; do mv "$file" "${file// /_}"; done

在上面的命令中,我們正在迭代所有匹配.txt副檔名的檔案,然後我們一次取一個檔案,然後將其移動到一個新檔案,以獲取新名稱,並且在這個新名稱中,我們將檔名之間的空格替換為下劃線。

輸出

immukul@192 dir1 % ls -tlr
total 0
-rw-r--r-- 1 immukul staff 0 Jul 3 20:44 sample_code.txt
-rw-r--r-- 1 immukul staff 0 Jul 3 20:44 sample_code_with_love.txt

更好的方法是將命令放入bash指令碼中,然後執行該bash指令碼。

要建立bash指令碼,請建立一個名為sample.sh的檔案,然後賦予它所有許可權以使其成為可執行檔案。

touch sample.sh
chmod 777 sample.sh

現在將命令放入sample.sh檔案中,並使用以下命令執行該檔案:

./sample.sh

輸出

immukul@192 dir1 % ls -tlr
total 0
-rw-r--r-- 1 immukul staff 0 Jul 3 20:44 sample_code.txt
-rw-r--r-- 1 immukul staff 0 Jul 3 20:44 sample_code_with_love.txt

更新於:2021年7月30日

522 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告