如何在 Linux 中遍历包含空格的文件列表?

linuxoperating systemopen source

为了遍历文件列表,我们需要使用 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

可以清楚地看到,文件名中含有空格的文件也被打印了出来。


相关文章


有用资源