Shell 如何在Unix中查看目录中的文件?
我正在编写一个shell脚本,它需要打印目录中文件和子目录的各种数据。我首先输入我的目录名,如下所示。name=$1,所以我只是想知道如何在目录中查找并使用其中的文件等。例如如何引用file1.txt和file2.txt等?您可以使用Shell 如何在Unix中查看目录中的文件?,shell,unix,Shell,Unix,我正在编写一个shell脚本,它需要打印目录中文件和子目录的各种数据。我首先输入我的目录名,如下所示。name=$1,所以我只是想知道如何在目录中查找并使用其中的文件等。例如如何引用file1.txt和file2.txt等?您可以使用find和wc命令 # As an example, find "$name" -perm -u=rwx | wc -l 假设您拥有对$name感兴趣的目录,那么只需执行以下操作即可获取文件 files=`ls $name` 比如说,你可以做这样的事情
find
和wc
命令
# As an example,
find "$name" -perm -u=rwx | wc -l
假设您拥有对$name感兴趣的目录,那么只需执行以下操作即可获取文件
files=`ls $name`
比如说,你可以做这样的事情
files=`ls $name`
for file in $files
do
if [ -r $name/$file ]
then
echo "$file is readable"
fi
done
或
看 请说得更具体些。你想干什么?如何引用文件?回显名称,显示内容,什么?我只需要打印可读、可写和可执行文件的总数。我正计划创建一个循环,分别检查每个文件。谁能执行该文件重要吗?假设我有一个权限为241的文件(可由所有者写入,可由组读取,可由其他人执行)。这算是可执行的吗(我不能执行,但其他人可以执行)?这听起来像是
find
的一项工作,您不必按名称引用文件,因为find
决定了文件名并完成了大部分繁重的工作。如何在if语句中使用目录中的第一个文件,比如我的目录名为Foo,目录中有一个文件名为file,但我不知道文件名是什么。如果我的问题没有意义,很抱歉。在if
语句中测试什么,这个find命令已经检查了“rwx”权限。我必须为每种类型打印一个单独的句子,比如一个用于可读,一个用于可写,一个用于可执行,它应该能够检查子目录是否也是rwx。你真的应该在你的问题中包括这一点!您可能是指-perm-u=rwx
-没有-
,权限匹配是准确的;i、 例如,仅返回组和其他人没有这些权限的文件;我还建议您重复引用$name
。谢谢您的帮助!这是否只是打印名称内的文件和目录的名称,我如何检查每个文件是否为r、w或x我尝试了如果[-r$file],然后回显“$file is readable”fi,如果这确实回答了您的问题,它就不起作用了,请随意接受它作为答案和/或向上投票。解析ls
输出,尤其是在for
循环中,是个坏主意-请参阅。改为使用路径名扩展:用于“$name”/*.
中的文件。您应该在[…]
中双引号引用变量引用,以便解析不会与带有嵌入空格的文件名中断。
find . -name '*.txt' -exec cat {} +
find . -name "*.txt" | xargs cat