我希望通过指定路径下的每个文件和目录递归循环,并回显该文件/目录的所有者和名称。
我发现这个question是一个很好的参考,但我想知道是否有bash 3.2
便携式和更简单的问题解决方案。不使用find
的解决方案将非常出色。
我还发现有shopt -s globstar
,但我不知道它是否可携带。
如果你查看我的脚本,你会发现log_owners
只是循环遍历$@
,所以问题可能在我的glob模式中。我认为log_owners $root/**
会遍历所有内容,但事实并非如此。
# OSX check.
darwin() {
[ $(uname) = "Darwin" ]
}
# Get file/directory's owner.
owner() {
if [ -n "$1" ]; then
if darwin; then
stat -f "%Su" "$1"
else
stat -c "%U" "$1"
fi
fi
}
log_owners() {
for file in $@; do
echo $(owner "$file")"\t$file"
done
}
我正在使用sh
/ bash 3.2
。
答案 0 :(得分:0)
好吧,我刚刚意识到相当明显(使用递归):
loop() {
for file in $1/**; do >/dev/null
if [ -d "$file" ]; then
loop "$file"
elif [ -e "$file" ]; then
echo $(owner "$file")"\t$file"
fi
done
}
似乎正常工作。