如何在 Linux 中迭代包含空格的檔案列表?


為了迭代檔案列表,我們需要使用 Linux 提供的 **find** 命令。

Linux **find** 語句是使用最廣泛的語句之一,它允許我們遍歷檔案層次結構。它主要用於查詢特定的檔案或目錄,我們還可以附加其他不同的 Linux 語句或標誌來增強或執行復雜的操作。

讓我們探討一個 **find** 語句的示例,以便更好地理解它。

在下面顯示的 Linux 程式碼中,我嘗試在“下載”資料夾中搜索一個檔案,為此我使用了 find 語句。

find sample.sh

輸出

sample.sh

請注意,如果 find 命令能夠找到檔案,它將簡單地列印檔名,否則它不會返回任何內容,終端程序將終止。

現在我們知道了 find 語句是如何工作的,讓我們探討一下我們想要使用 find 命令來列印檔名中也包含空格的檔案的情況。

考慮一個所有這些檔案都存在的目錄 **dir1**。

immukul@192 dir1% ls -ltr
total 5232
-rwxrwxrwx 1 immukul staff 446966 Sep 23 1998 wget-1.5.3.tar.gz
drwxrwxrwx 3 immukul staff 96 Jul 7 17:42 d1
-rwxrwxrwx 1 root staff 106 Jul 8 13:10 sample2.sh
-rwxrwxrwx 1 root    staff 946 Jul 12 18:45 sample.sh
-rwxrwxrwx 1 root    staff 718 Jul 12 18:48 sample1.sh
drwxr-xr-x 2 immukul staff 64 Jul 13 11:36 dr1
drwxr-xr-x 3 immukul staff 96 Jul 13 11:36 dr2
-rw-r--r-- 1 immukul staff 661 Jul 14 09:00 newZip.zip
-rw-r--r-- 1 immukul staff 2201512 Jul 14 09:19 zipContent.zip
drwxrwxrwx 4 immukul staff 128 Jul 14 09:34 d2
-rwxrwxrwx 1 immukul staff 24 Jul 14 15:52 sss.sh
-rw-r--r-- 1 immukul staff 122 Jul 14 16:10 somefile.txt
-rw-r--r-- 1 immukul staff 0 Jul 15 09:44 sample 1.txt

現在我們只想列印以字母 **s** 開頭的檔案的檔名,而且,如果仔細觀察,檔名 **sample 1.txt** 在名稱中間有空格,該檔案也應該由命令列印。

命令

允許我們列印包含空格的檔案的命令如下所示

find . -iname "s*" | while read file
do
   echo $file
done

輸出

./sample.sh
./somefile.txt
./sample2.sh
./sample 1.txt
./sss.sh
./sample1.sh

可以清楚地看到,檔名中包含空格的檔案也被打印出來了。

更新於: 2021-07-30

406 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告