我用它来遍历/ home目录中的文件夹
for FOLDERNAME in `\ls -1 /home/`
我想知道它是否安全
答案 0 :(得分:6)
如果您想要/home
中的所有子目录,请使用
( # run in subshell so "shopt -s dotglob" doesn't affect rest of script
shopt -s dotglob
for DIR in /home/*/; do
DIRNAME=`basename "$DIR"`
# do whatever with "$DIR" or "$DIRNAME"
echo -n "$DIRNAME"|od -t cz
done
)
请注意尾部斜杠和引用的变量。
修改强>
使用目录和文件
mkdir /home/..abc
mkdir /home/.abc
mkdir /home/$'a\nc'
mkdir /home/'a?c'
mkdir /home/abc
mkdir /home/'foo bar'
touch /home/test
这给了我输出
0000000 . . a b c >..abc<
0000005
0000000 . a b c >.abc<
0000004
0000000 a \n c >a.c<
0000003
0000000 a ? c >a?c<
0000003
0000000 a b c >abc<
0000003
0000000 f o o b a r >foo bar<
0000007
,其中
ls -1 -F -b -A /home
给我输出
..abc/
.abc/
a\nc/
a?c/
abc/
foo bar/
test
(test
是一个文件)
答案 1 :(得分:3)
No。如果你真的是偏执狂,你可以使用Safe Find(R)(C)(TM)(FLOSS)。
while IFS= read -r -d '' -u 9
do
some_command "${REPLY}"
done 9< <( find "/home" -print0 )
答案 2 :(得分:-1)
find -type d -execdir COMMAND {} +
是这样做的方法。查找将组织,包含空格和换行符等的名称正确传递给COMMAND。 +将允许传递多个名称 - 您可以使用... {} ";"
代替。而不是-execdir你可以使用-okdir,它要求确认(非常安全!:))。