1

我是 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 时,它会删除文件夹 A、文件夹 B 和文件夹 C 中的所有文件类型我应该在这个脚本中进行哪些修改?谢谢。

4

3 回答 3

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 {} \;
于 2012-06-08T18:40:04.433 回答
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

或者你想要的任何其他东西。

于 2012-06-08T18:41:04.773 回答
0

要删除所有文件,请删除-name ...过滤器:

find -type f -exec rm -f {} ';'

明显的警告:要小心。

于 2012-06-08T18:40:19.187 回答