通过shell删除文件

时间:2012-06-08 18:30:36

标签: shell unix

我是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中的所有文件类型 我应该在这个脚本中进行哪些修改? 感谢。

3 个答案:

答案 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 {} ';'

明显警告:小心。

相关问题