同じフォルダに同じ名前の2つのファイル - 1つだけを削除する必要がありますが、両方を削除する必要はありません。

同じフォルダに同じ名前の2つのファイル - 1つだけを削除する必要がありますが、両方を削除する必要はありません。

フォルダに/var/spool/lp/logs「requests」というファイルが2つあるようです。 1つはlpに属し、もう1つはrootに属します。

ルートが所有する要求ファイルを削除する必要があります。これをどのように参照しますか?

以下はコマンドの出力ですls -l

-rw-r--r--   1 root     sys            0 Jan 30  2014 lp                 
-rw-rw----   1 root     lp          6584 Nov  4 06:10 lpsched            
-rw-rw----   1 lp       lp          3365 Dec 14 10:56 requests           
-rw-r--r--   1 root     sys      1668416 Dec 14 10:41 requests           
drwxr-xr-x   2 root     sys         1024 Sep 30  2013 requests.archives  

答え1

GNU lsがある場合は、次をls -lQ実行して参照されているファイル名のバージョンを表示できます。

$ ls -lQ
total 0
-rw-r--r--. 1 user group 0 Dec 14 14:32 "requests"
-rw-r--r--. 1 user group 0 Dec 14 14:32 "requests "

特定のファイルを削除するには、まず次のように対応するinode番号を見つけますls -li

$ touch 'requests' 'requests '
$ ls -li
total 0
440 -rw-r--r--. 1 user group 0 Dec 14 14:32 requests
441 -rw-r--r--. 1 user group 0 Dec 14 14:32 requests

これには2つの類似ファイルがあります。 1つはinode 440、もう1つはinode 441(左の列)です。

あなたの場合、rootが所有しているファイルを見つけて、対応するinode番号を取得してください。-xdev(または-mount)オプションは、find現在のディレクトリにマウントされているファイルシステムがある場合は、そのサブファイルシステムから一致するファイルをキャプチャしないように同じファイルシステムを維持することを意味します。

それから:

$ find . -inum 441 -xdev -user root -ls
441    0 -rw-r--r--   1 user group 0 Dec 14 14:32 ./requests\

空白文字はfind末尾に引用されています。

削除:

$ find . -inum 441 -xdev -user root -delete  # GNU find

または

$ find . -inum 441 -xdev -user root -exec rm {} \;  # otherwise

答え2

同じフォルダに同じ名前の2つのファイルを含めることはできません。見えない文字(末尾のスペースなど)がある可能性があります。

私の提案は、名前requestsを変更してrequests.realからインタラクティブな削除を実行することです。不要な名前を削除することを選択してから(必要に応じて)、ワイルドカードを使用して他の名前を正しい名前に置き換えることができます。

mv requests requests.real             # STOP if this fails
mv requests.archives KEEP.archives    # Temporary
rm -i req*                            # Interactive delete: "y" to delete, "n" to skip
mv req* requests                      # Rename whatever's left that begins "req"
mv KEEP.archives requests.archives    # Put this one back again

関連情報