web-dev-qa-db-ja.com

'rm'を使用してファイルを削除できません

サーバーの1つ(IBM AIX)で、パス/ data/1002 /にファイルがあり、「rm」コマンドを使用して削除または削除できませんでした。表示されたエラーメッセージは「rm:S1208001.002:パス名のファイルまたはディレクトリが存在しません」です。

「-f」オプションを使用すると、エラーメッセージは表示されませんでしたが、ファイルはまだそこにあります。

このファイルのバイトサイズは「0」で、「touch S120801.002」コマンドを使用すると、そのディレクトリに同じファイル名の2つのファイルが表示されます。

ディレクトリリストは次のとおりです。

$ ls -l total 56
-rwxrwxrwx    1 Oracle   dba               0 Feb 09 11:57 S1208001.002 
drwxrwxrwx    4 nobody   dba           24576 Feb 09 13:36 backup

この偽の敵を取り除くにはどうすればよいですか?

ありがとう。

更新1

touchコマンドを使用した後、ディレクトリリストは次のようになります。

$ ls -l total 56
-rwxrwxrwx    1 Oracle   dba               0 Feb 09 11:57 S1208001.002 
-rwxrwxrwx    1 Oracle   dba           77790 Feb 09 14:30 S1208001.002
drwxrwxrwx    4 nobody   dba           24576 Feb 09 13:36 backup
4
Alvin Sim

このファイル名に印刷できない文字が含まれている可能性があります。それは別のファイルを作る「タッチ」を説明するでしょう。

次のようなものを試してください

       ls -b

それが事実かどうかを確認するためにディレクトリで?

次に、次のようなことができるはずです。

       rm -i S*2 

そしてそれは隠された文字でさえファイルのためにあなたにプロンプ​​トを出すはずです。

または、findを使用してこれを行うことができる場合があります...

       find . -name S\*2 -exec /bin/rm -i {} \;

ファイルの入力を求める必要があります... AIXの「find」構文が異常であるかどうかわからないため、これは機能しない可能性がありますが、「rm -i」の部分では、コマンドが間違っている場合は中止できます。

8
Robert Novak

Iノードで試すことができます。あなたがそこでどんな特別な文字を使っているのかわかりませんが、これは試してみる価値があるかもしれません:

$ touch badfile^M
$ ls -il bad*
   99 -rw-r--r--    1 username  group               0 Feb 09 04:39 badfile
$ find . -inum 99 -exec /bin/rm {} \;
$ ls -li bad*
ls: 0653-341 The file bad* does not exist.
3
Cakemox

ファイル(またはその他の印刷できない文字)の最後にスペースがあります。 $ ls -l出力で両方の行を選択して確認してください。それを削除するには、 完全に安全な検索 メソッドを試すことができます:

dir=/path/to/your/directory

absolute_dir_path_x="$(readlink -fn -- "$dir"; echo x)"
absolute_dir_path="${absolute_dir_path_x%x}"

while IFS= read -rd $'\0' path
do
    file_path="$(readlink -fn -- "$path"; echo x)"
    file_path="${file_path%x}"
    echo "START${file_path}END"
done < <( find "$absolute_dir_path" -type f -name '*S1208001*' -print0 )

次に、whileループの最後にrm -- "${file_path}"を追加するだけです。

1
l0b0

ファイルシステムは、最後のプロセスがファイルの使用を停止するまで、またはfsがクリーンアップするまでファイルを保持する可能性があります。

NFSマウントされたNetApp-Sharesで同様の何かを見てきました。少し待つと、ファイルが消えます。

0
user29862

私は同様の問題を経験し、単純なfsck(そして再びrm)が私の問題を解決しました

0
Pitto