如何在 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 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告