File 在同一父目录中具有相同名称的文件和目录-Solaris 8,ufs
好的,我已经在Solaris上工作了10多年,从来没有见过这个 我有一个目录列表,其中包括同名的文件和子目录:File 在同一父目录中具有相同名称的文件和目录-Solaris 8,ufs,file,directory,filesystems,solaris,File,Directory,Filesystems,Solaris,好的,我已经在Solaris上工作了10多年,从来没有见过这个 我有一个目录列表,其中包括同名的文件和子目录: -rw-r--r-- 1 root other 15922214 Nov 29 2006 msheehan drwxrwxrwx 12 msheehan sysadmin 2048 Mar 25 15:39 msheehan 我使用文件来发现文件的内容,我得到: bash-2.03# file msheehan msheehan: direct
-rw-r--r-- 1 root other 15922214 Nov 29 2006 msheehan
drwxrwxrwx 12 msheehan sysadmin 2048 Mar 25 15:39 msheehan
我使用文件来发现文件的内容,我得到:
bash-2.03# file msheehan
msheehan: directory
bash-2.03# file msh*
msheehan: ascii text
msheehan: directory
我不担心文件,但我想保留目录,所以我尝试rm:
bash-2.03# rm msheehan
rm: msheehan is a directory
这是我的两个问题:
bash-2.03# ls -l > jb.txt
bash-2.03# vi jb.txt
其中包括:
-rw-r--r-- 1 root other 15922214 Nov 29 2006 msheehab^?n
drwxrwxrwx 12 msheehan sysadmin 2048 Mar 25 15:39 msheehan
始终小心使用退格键 还有我自己问题第二部分的快速回答 我可以想象我可以重命名目录,删除文件,然后将目录重新命名为原始目录 。。。我仍然很想看看其他人有什么想法
JB我怀疑其中一个名字中有一个奇怪的字符。您可以尝试使用shell通配符扩展来查看:type
cat msh*
然后按通配符扩展键(在我的shell中是Ctrl-X*)。您应该列出两个名称,其中一个可能有转义字符。我猜这实际上是两个不同的文件名,它们“看起来”相同,因为当shell在中传递名称的扩展版本时,命令文件能够区分它们。尝试将ls导入od或其他十六进制/八进制转储实用程序,以查看它们是否真的具有相同的名称,或者是否涉及非打印字符。我想知道是什么原因导致了这种情况。除了文件系统错误之外,它可能是由某种方式通过的非ascii字符引起的。在这种情况下,请使用另一种具有更简单字符串语义的语言来执行该操作 看看这个ruby代码片段的输出会是什么,这会很有趣:
ruby -e 'puts Dir["msheehan*"].inspect'
要查看文件中是否有特殊字符,请尝试将-b或-q选项设置为ls, 假设solaris 8具有这些选项 作为删除文件的另一种解决方案,您可以打开图形文件浏览器 (喘息!)并将不需要的文件拖放到垃圾箱中 另一种解决方案可能是将一个文件移动到另一个名称(没有未知特殊字符的文件),然后使用通配符删除特殊字符目录名称
mv msheehan temp
rm mshee*
mv temp msheehan
当然,您需要确保只有要删除的文件与通配符匹配。
对于您的特定情况,由于一个是目录,另一个是文件,此命令可能解决了所有问题:
rmdir msheeha*
查看非打印字符和空白的一种简单快捷的方法是通过cat-vet进行输出,例如: #ls-l |猫兽医
很好,很容易记住 对于第2部分,由于一个名称包含两个额外字符,您可以使用:
mv sheehan abc
mv sheeha??n xyz
完成后,您就又有了一个健全的文件名,可以根据需要进行修复。您可以使用iNode进行删除 如果您在“ls”中使用“-i”选项 我举了一个例子(西班牙语),说明如何在Solaris上使用then iNode删除文件
乌尔科,打得好@Jonathan Bourke,什么是“for f in*;echo“t${f}t”;给你了吗?嗯……虽然是第二个“文件”“问题中的结果表明,情况可能并非如此。。。我很困惑。这台服务器上没有安装ruby,而且它是一个关键的生产数据库系统,我想我暂时不使用它。这是个好问题,也是一个占据我头脑的问题。。。JBOh,多有趣的问题啊,很高兴你找到了答案+1.
mv sheehan abc
mv sheeha??n xyz
$ ls -li
total 1
20801 -rw-r--r-- 1 root root 0 2010-11-08 01:55 a?
20802 -rw-r--r-- 1 root root 0 2010-11-08 01:55 a\?
$ find . -inum 20802 -exec rm {} \;
$ ls -li
total 1
20801 -rw-r--r-- 1 root root 0 2010-11-08 01:55 a?