如何在 Linux 中迭代带有空格的文件列表?
为了遍历文件列表,我们需要使用Linux提供给我们的find命令。
Linuxfind语句是使用最广泛的语句之一,它允许我们遍历文件层次结构。它主要用于查找特定的文件或目录,我们还可以附加不同的其他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开头的文件的名称,如果我们仔细观察,文件名sample1.txt的名称之间有空格,该文件也应该由命令打印。
命令
允许我们打印带空格的文件的命令如下所示
find . -iname "s*" | while read file do echo $file done输出结果
./sample.sh ./somefile.txt ./sample2.sh ./sample 1.txt ./sss.sh ./sample1.sh
可以清楚地看到,名称中有空格的文件也被打印出来了。