windows下批量删除Mac下的隐藏文件

以下脚本包含删除以"._"和".pbb"的文件。
由于脚本是bash shell,所以在Windows上是不能运行的,因此需要借助三方工具进行运行。我用的是cygwin,找到Installing Cygwin直接下载对应平台安装包,根据提示默认安装完场即可;
安装完成后即可在cygwin中运行bash shell;
将下面的脚本复制到.sh的文件中保存,将文件拖到cygwin窗口回车即可运行,运行成功要求输入指定的路径,接着脚本会遍历改路径下所有的文件和文件夹,找出隐藏文件和特定后缀的文件;
【windows下批量删除Mac下的隐藏文件】/cygdrive/c/为Cygwin的映射;

handLog="/cygdrive/c/Users/Administrator/Desktop/pbbFileHand.log" # handLog="pbbFileHand.log" echo "操作日志:${handLog}" touch "${handLog}"hitFile="/cygdrive/c/Users/Administrator/Desktop/hitFile.txt" # hitFile="hitFile.txt" touch "${hitFile}"echo " ------------------ `Date` ------------------ " >> "${handLog}" echo " 命中文件:${hitFile}" >> "${handLog}" echo " ------------------ `Date` ------------------" >> ${hitFile}function recursionDir () {# 传入的路径,注意使用临时变量,否则自动视为生命周期中的全局变量 local dir=$1 if [[ -e "${dir}" ]]; then# 注意文件路径不对时,文件为空;路径是目录时,文件是特殊文件; # 需要向下一级寻找,-a 获取所有 # 文件名中有空个时,ls会换行处理;有"/"时,ls会处理成":" # 在使用"rm"时,系统对文件名中的"/"使用":"表示 originChar="[ ]" targetChar="[^]" for file in `ls -a "${dir}" | tr "${originChar}" "${targetChar}" `; dodot="." dotDot=".."# 将"^"替换回" " file=`echo ${file} | tr "[${targetChar}]" "[${originChar}]" `if [[ ${file} == ${dot} ]]; then continue fiif [[ ${file} == ${dotDot} ]]; then continue fi# 不使用local,同for循环周期 filePath=${dir}/${file}echo "文件 ${filePath}" echo "${filePath}" >> "${handLog}"if [[ -d "${filePath}" ]]; thenrecursionDir "${filePath}"elsedeleteHideFile "${filePath}" "${file}" # 如果存在.pbb文件就删除 deletePBBFile "${filePath}.pbb" fi done else deleteHideFile "${dir}" fi }function deleteHideFile () {if [[ -f "$1" ]]; then local fileName=$2begin=`echo ${fileName:0:2}` end=`echo ${fileName:0-4:4}`prefix="._" suffix=".pbb"if [[ ${begin} == ${prefix} ]]; then# if [[ "${end}" == "${suffix}" ]] # then# echo "begin: ${begin}" # echo "end:${end}"echo "命中文件:$1" echo "$1" >> "${hitFile}"# 将有特殊符号的文件名当着整个字符串传入进行删除 rm "$1"if [[ $? == 0 ]]; then echo "$1隐藏文件,已移除" >> "${handLog}" else echo "$1隐藏文件,移除失败" >> "${handLog}" fi # fi fi fi }function deletePBBFile () {if [[ -e $1 ]]; then echo "wc -c filename | awk '{print $1}'"rm "$1"if [[ $? == 0 ]]; then echo "$1PBB文件,已移除" >> "${handLog}" else echo "$1PBB文件,移除失败" >> "${handLog}" fi fi }echo "输入指定的路径:" read tempDir ## 不能使用‘~’指定当前用户 # tempDir="/Users/niko/Documents/CSII/CSIICore_iOS.zip" # cd "${tempDir}"recursionDir "${tempDir}"

    推荐阅读