如何在 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
可以清楚地看到,檔名中包含空格的檔案也被打印出來了。
廣告