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