ファイル名がダッシュ(ハイフンまたはマイナス)で始まるファイルをどのように削除しますか-
?私はリモートのOSXサーバーにsshしていて、ディレクトリにこのファイルがあります。
tohru:~ $ ls -l
total 8
-rw-r--r-- 1 me staff 1352 Aug 18 14:33 --help
...
どうすれば削除できますか--help
CLIから?この問題は、さまざまな形で遭遇することがあり、これらのファイルは簡単に作成できますが、取り除くのは困難です。
バックスラッシュを使ってみました
rm \-\-help
引用してみた
rm "--help"
マイナス(ダッシュまたはハイフン)文字がオプションとして解釈されないようにするにはどうすればよいですか?
「-」を使用して、次のようにrmがコマンドラインオプションの解析を停止するようにします。
rm -- --help
またはあなたがすることができます
rm ./--help
find
を使用してください:
find . -name '--help' -delete
そして、これは良い方法です。削除できるようなこのようなファイルがいくつかある場合は、最初に-delete
オプションなしでfindを実行するだけでファイルのプレビューリストを取得できます。ファイルは、-delete
でもう一度実行するだけで問題ありません。
実際、rm
を避けてfind
を優先することは(特に最初にプレビューを行う場合)、いつか必然的にrm *
の間違いを避けるのに役立つ良い習慣です。
ただし、そのfindはすべてのサブディレクトリを再帰的に処理するため、次のようなサブディレクトリの深さ制約を指定して実行することをお勧めします。
find . -maxdepth 1 -name '--help' -delete
検索を現在のディレクトリに制限します。
Vegar Nilsenとedfuhの答えは非常によく、このような問題に対する適切な解決策です。
この質問に対する一般的な回答を追加して、難しいファイル名のanyファイルを削除できるようにします。最初にls -i
または何らかの形式のstat
を使用してそのiノード番号を取得し、次に現在のディレクトリでiノード番号を使用してファイルを検索し、rm
コマンドを実行してファイルを削除しますiノード番号が一致するファイル
find . -inode <inode> -exec rm {}\;
Iノード番号は各ファイルシステムで一意であるため、これを使用してファイルを削除できます。 Unicodeまたはエスケープ文字の使用。入力するのが非常に面倒なので、行を追加することをお勧めします
TAB: menu-complete # Tab: Cycles through the command
"\e[Z": menu-complete-backward # Shift-Tab: Cycles backwards
bashを使用している場合は、.inputrc
ファイルに挿入します。これにより、可能な補完のリストを循環できます( 詳細については )。
残忍な解決策:
Perl -e "unlink '--help' or die 'Could not unlink.';"
Perl -e "rmdir '-d' or die 'Could not rmdir.';"
ダッシュとスペースを含むファイルを作成してから削除するLinuxウォークスルー
注意してください!誤ってrm -rf /
または同様のカスケード削除コマンドを実行しないでください。
削除しようとしているファイルにアスタリスクまたはスラッシュが含まれている場合は、.
または/*
または*
またはオペレーティングシステムをカスケード削除する可能性のあるその他のワイルドカードを誤って送り出さないでください。
「-yo yo」というファイルを作成します
eric@dev ~ $ touch -- "--yo yo"
eric@dev ~ $ ls
bin --yo yo
最初に、find:で検索します
eric@dev ~ $ find . -name "*--yo yo*"
./--yo yo
Findコマンドで、削除するファイルが1つだけ検出されることを確認します。
次に、-deleteオプションを渡して、検索して削除します:
eric@dev ~ $ find . -name "*--yo yo*" -delete
eric@dev ~ $ ls
bin
ああ、それはなくなった。
真夜中の司令官(mc
)が最も簡単です。指差してF8キーを押すだけです;)
これは、このスレッドを見つける前に使用したソリューションです。vim
を使用して「編集」ディレクトリ:
vim .
次に(vimで)ファイルを選択し、delを押して削除を確認します。
完了したら、:q
でvimを終了します
プレフィックスとしてディレクトリ名を追加しようとしましたか?
$ rm ./-filename.txt dirname/-filename2.txt
$ mv ./-filename.txt filename.txt
$ cp teste ./-teste
一般に、ファイルのプレフィックスとしてディレクトリを使用すると、パーサー関数によるコマンドオプションとしての「マイナス」文字の誤った解釈を回避できます。