我必须检查一组文件是否可读。我知道如何使用 来检查一个文件[ -r file.txt ]
,但是如何编写一个循环来检查多个文件(包括目录)?
例如,file1.txt file2.txt directory1 directory2 file3.txt
。
答案1
以下函数检查其所有参数是否都是可读文件:
files_are_readable () {
for x do
[ -r "$x" ] || return 1
done
}
答案2
在 bash 中你可以做
for file in file1.txt file2.txt directory1; do
if [[ -r $file ]]; then
...
fi
done
文件列表的部分可以是任何你可以读取以空格分隔的每个“单词”并将其放入 $file 中的内容,这样你就可以说
for file in $(find .); do
...
done
如果您想对当前目录下的所有文件和目录或其他类似内容执行某些操作。但要小心 find 的示例,如果您的任何文件或目录名中有空格,$file 仍将在空间上进行分割,因此它会将每个部分作为不同的“文件”进行尝试