批量刪除包含某字符串的文件

刪除名稱中包含某字符串的文件

應用場景:寫了不少版的文檔,定稿後只保留終稿,草稿狀的都刪除。linux

以下目錄結構,刪除root_dir下文件名稱包含草稿的全部文件shell

/root_dir
  草稿_1.txt
  草稿_2.txt
  終稿_1.txt
  終稿_2.txt
  /child_dir
    child_草稿_1.txt
    child_草稿_2.txt
    child_終稿_1.txt
    child_終稿_2.txt
  /child_dir_2
    child_2_草稿_1.txt
    child_2_草稿_2.txt
    child_2_終稿_1.txt
    child_2_終稿_2.txt

這裏須要層層遍歷文件夾,如root_dir中包含了文件夾child_dir。bash

方法1:遍歷刪除

#!/bin/bash
cd root_dir
for file in `ls .`
do
	if [ -f $file ]
		then
		rm *草稿*
	fi
	if [ -d $file ]
		then
		echo $file 爲目錄
		cd $file
		for f in `ls .`
		do
			if [ -f $f ]
				then
				rm *草稿*
			fi
		done
		cd ..
	fi
done

刪除完畢。post

方法2:使用find更簡潔

cd root_dir
find . -name "*未完*" -exec rm -f {} \;

刪除完畢。code

注意:必定要保證進入了須要刪除文件的目錄,該命令沒法撤回ip

find命令參數可查element

遍歷目錄刪除文件

#!/bin/bash

function getdir(){
    for element in `ls $1`
    do
        dir_or_file=$1"/"$element
        if [ -d $dir_or_file ]
        	then
            		getdir $dir_or_file
	fi
        else
	if [[ $element == 【未完】* ]]
		then
			rm $dir_or_file
			echo $dir_or_file
		fi
        fi
    done
}
root_dir="_posts"
getdir $root_dir

這裏刪除要使用全路徑,不然會報錯找不到文件。文檔

相關文章
相關標籤/搜索