unix - 仅从目录中删除文件

时间:2012-01-01 10:20:40

标签: perl bash shell unix solaris

使用目录结构,例如:

toplev/
      file2.txt
      file5.txt
      midlev/
            test.txt
            anotherdirec/
                         other.dat
                         myfile.txt
                         furtherdown/
                                    morefiles.txt
                         otherdirec/
                                    myfile4.txt
                                    file7.txt

如何从'anotherdirec'中删除所有文件(不是目录而不是递归)?在这个例子中,它将删除2个文件(other.dat,myfile.txt)

我在'midlev'目录中尝试过以下命令,但它出现此错误(find: bad option -maxdepth find: [-H | -L] path-list predicate-list):

find anotherdirec/ -type f -maxdepth 1

我正在运行SunOS 5.10。

4 个答案:

答案 0 :(得分:5)

rm anotherdirec/*

应该适合你。

答案 1 :(得分:4)

Rob的回答(rm anotherdirec / *)可能会有效,但它有点冗长并产生一堆错误消息。问题是您使用的是不支持-maxdepth选项的find版本。如果你想避免'rm anotherdirec / *'给出的错误信息,你可以这样做:

for i in anotherdirec/*; do test -f $i && rm $i; done

请注意,如果任何文件包含空格或其他特殊字符,这些解决方案都不会起作用。如果这是个问题,你可以在$ i附近加上双引号。

答案 2 :(得分:3)

查找对期权订单敏感。试试这个:

find anotherdirec/ -maxdepth 1 -type f -exec rm {} \;

答案 3 :(得分:1)

rm toplev/midlev/anotherdirec/*如果您只想删除文件。

rm -rf toplev/midlev/anotherdirec/*如果要删除文件和较低目录