1

有人可以帮我解决这个问题:

如下所示,我有一个与“sp”同名的文件和目录

如何删除大小为 44673Bytes 的文件“sp”

opxnyd@opxzone1d:/opt/opxnyd/packages/OPXPNY3DB/src/OPXPNYP>ls -alrt 
-rwxr-xr-x   1 opxnyd   opics      44673 Sep  7  2011 sp
drwxr-xr-x   4 opxnyd   opics       1974 May 10 10:22 sp
4

4 回答 4

2

诀窍是它们实际上没有相同的名称。其中之一的名称中有空白或非打印字符。试试看ls --escape

于 2012-05-18T19:44:13.283 回答
0

尝试重命名文件(然后是其中任何一个)删除您不想要的文件(如果您想重命名文件夹,请再次重命名)

于 2012-05-18T19:51:28.390 回答
0

您不能有同名的目录和文件。其中一个可能有一个空格或其他一些不可打印的字符。

举个例子:

$ touch "sp"
$ mkdir "sp "
$ ls -lrt
total 2
-rw-r--r--  1 user  staff    0 May 18 15:47 sp
drwxr-xr-x  2 user  staff   68 May 18 15:47 sp 

要仅删除文件,您可以使用以下 find 命令:

find -E . -depth 1 -type f -regex "\./sp[ \t]*" -exec rm {} \;

或以下 rm 命令:

\rm -i sp\ *
于 2012-05-18T19:44:19.057 回答
0

正如查理马丁所说,他们实际上并没有同名。但是您可以不使用rm sp*-r 选项(目录),只删除文件。

于 2012-05-18T19:48:17.217 回答