循环遍历目录并删除文件

时间:2017-10-04 10:35:12

标签: bash shell

如果路径/home/*/.ssh/authorized_keys存在,我想遍历homefolders并验证。如果它存在,我想删除用户的文件... /。ssh / disabled_authorized_keys,该文件已经在他的homefolder中已经是authorized_keys文件。

到目前为止,我已创建此脚本,但它将删除所有disabled_authorized_keys,而不仅仅是拥有authorized_keys的用户。

 for i in /home/*/.ssh/authorized_keys;
 do ii=`echo $i|awk -F '/' '{print $3}'` ;
 rm /home/$ii/.ssh/disabled_authorized_keys;
 done

提前谢谢你。 (我是bash脚本的绝对初学者!)

2 个答案:

答案 0 :(得分:1)

试试这个:

for path in /home/*/.ssh/authorized_keys; do
    rm "$(dirname "$path")"/disabled_authorized_keys
done

如果disabled_authorized_keys不存在,它会在stderr上抱怨,但不会"崩溃"。

More about dirname

答案 1 :(得分:0)

for dir in /home/*/.ssh; do
    [[ -e $dir/authorized_keys ]] && rm "$dir/disabled_authorized_keys"
done

[[ -e file ]]检查file是否存在。将&&读为“if-then”。