我是shell编程新手。 基本上,我写了一个小脚本,在执行时清除该特定文件夹中的某些文件类型:
#!/bin/bash
echo "cleaning temp extensions "
find -type f -name '*.pyc' -exec rm -f {} ';'
find -type f -name '.*.swp' -exec rm -f {} ';'
find -type f -name '*~' -exec rm -f {} ';'
echo "files cleaned!!"
但是现在,我希望清除存在此shell脚本的文件夹中的所有文件。
例如,如果我有像
这样的东西 folderA/ folderB/ folderC/ clean.sh
当我运行此clean.sh时,它会删除folderA folderB和文件夹C中的所有文件类型 我应该在这个脚本中进行哪些修改? 感谢。
答案 0 :(得分:2)
您可以将所有3个查找命令合并为一个:
find -type f \( -name '*.pyc' -o -name '.*.swp' -o -name '*~' \) -exec rm -f {} \;
现在要在文件夹A中执行此查找,请使用:
find folderA/ -type f \( -name '*.pyc' -o -name '.*.swp' -o -name '*~' \) -exec rm -f {} \;
答案 1 :(得分:1)
你所要求的并不完全清楚。
删除当前目录中的所有文件:
find . -maxdepth 1 -type -f -delete
删除当前目录中的所有文件及其下的所有目录:
find . -type -f -delete
删除当前目录中的所有文件和目录:
find . -delete
如果你真的想要删除“存在这个shell脚本的文件夹中的所有文件”,那就太疯狂了。为什么要将脚本复制到目录中以删除该目录中的文件?如果你的意思是“我不能删除指定目录或目录中具有指定扩展名的文件”,那么它会像这样工作:
#!/usr/bin/env bash
find "$@" -type f \( -name '*.pyc' -o -name '*.swp' -o -name '*.~' \) -delete
并将其保存到PATH中的目录(例如/usr/local/bin
),然后您可以说:
clean.sh folderA folderB folderC
或者你想要的任何其他东西。
答案 2 :(得分:0)
要删除所有文件,请删除-name ...
过滤器:
find -type f -exec rm -f {} ';'
明显警告:小心。