1、copy备份然后删除
save_file_and_del_other()
{
print_info "save_file_or_dir in"
mkdir ../copy_tmp
for tmp in "$@"; do
print_info "save $tmp"
cp -p -${debug_opt} $tmp ../copy_tmp/
done
if [[ $? -ne 0 ]];then print_error "save file_or_dir failed!";fi
rm -${debug_opt} ./*
if [[ $? -ne 0 ]];then print_error "del current directory failed!";fi
cp -p -${debug_opt} ../copy_tmp/* ./
if [[ $? -ne 0 ]];then print_error "restore file_or_dir failed!";fi
rm -${debug_opt} ../copy_tmp
if [[ $? -ne 0 ]];then print_error "rm copy_tmp failed!";fi
}
2、使用shopt命令
shopt命令用于显示和设置shell中的行为选项,通过这些选项以增强shell易用性。
shopt命令若不带任何参数选项,则可以显示所有可以设置的shell操作选项。
开启与关闭
开启shopt命令:shopt -s extglob
关闭shopt命令:shopt -u extglob
开启之后,以下5个模式匹配操作符将被识别:
- ?(pattern-list) - 所给模式匹配0次或1次;
- *(pattern-list) - 所给模式匹配0次以上包括0次;
- +(pattern-list) - 所给模式匹配1次以上包括1次;
- @(pattern-list) - 所给模式仅仅匹配1次;
- !(pattern-list) - 不匹配括号内的所给模式。
shopt -s extglob
rm -rfv !(config|Config)
shopt -u extglob
3、find命令
下面的命令将会删除当前目录下除了 .gz 之外的所有文件
$ find . -type f -not -name '*.gz' -delete
下面的命令行将会删除掉当前目录下除了 .gz、 .odt 和 .jpg 之外的所有文件:
$ find . -type f -not \(-name '*gz' -or -name '*odt' -or -name '*.jpg' \) -delete
find . -maxdepth 1 -type d -not \( -name 'hard' -or -name 'over' \) |xargs rm -rfv 2>&1 |tee -a log
4、删除当前目录下的某一个文件
for filename in $(find ./ -name "*")
do
if [ "${filename}" = "./" ]; then
echo "Don't delete ${filename}"
#echo -n "" 什么也不打印,do nothing,shell中if语句不能为空
elif [ "${filename:0-10}" = "aaaaConfig" ]; then
echo "Don't delete ${filename}"
elif [ "${filename}" = "./lib/firmware_v5/idspdrv_cmd_msg.h" ]; then
echo "Don't delete kernel/private/lib/firmware_v5/idspdrv_cmd_msg.h"
elif [ "${filename}" = "./lib/firmware_v5/cmd_msg_v5.h" ]; then
echo "Don't delete kernel/private/lib/firmware_v5/cmd_msg_v5.h"
elif [ -d ${filename} ]; then
echo "${filename} is a directory, don't delete"
else
rm -${debug_opt} ${filename}
fi
done