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}"
推荐阅读
- 开学第一天(下)
- 【故障公告】周五下午的一次突发故障
- 生活随笔|好天气下的意外之喜
- MongoDB,Wondows下免安装版|MongoDB,Wondows下免安装版 (简化版操作)
- 汇讲-勇于突破
- Android中的AES加密-下
- 说的真好
- 放下心中的偶像包袱吧
- Linux下面如何查看tomcat已经使用多少线程
- 【1057快报】深入机关,走下田间,交通普法,共创文明