BASH rm 命令忽略。和

问题描述 投票:0回答:1

我希望我的

rm -rf
忽略
.
..
,这样它就不会返回错误

#!/bin/bash
#put directories older than 4 days in a variable
LOC="/home/efetzer/testDelete"
declare -a DIRS=$(find ${LOC} -type d -mtime +2)  #DIRS is an array of folder names
echo ${DIRS[@]}
# Cleanup the directorties
for i in ${DIRS[@]}
do
    echo "Cleaning:  $i"
    rm -rf $i/{*,.*}
    rmdir $i
done

如何让之前的

rm -rf
命令忽略
.
..

谢谢!

bash rm
1个回答
0
投票

如果您对除

.
..
之外的所有内容都感兴趣,您可以使用
extglob
:

shopt -s extglob
for i in "${DIRS[@]}" ; do
    echo "Cleaning:  $i"
    rm -rf "$i"/!(.|..)  # Everything but . and ..
    rmdir "$i"
done

请注意,我添加了双引号以使脚本即使对于包含空格的路径也能工作。

© www.soinside.com 2019 - 2024. All rights reserved.