プログラムが正しく実行されないため、私のホームディレクトリにはドットで始まり、スペースやアスタリスクを含む奇妙なシンボルを含む多くのファイルがあります。このファイルを削除したいのですが、削除に問題があります。この質問は次のようになります。スペースと句読点を含むファイルの名前を変更するしかし、もっと悪いです。手動で削除するにはファイルが多すぎるため、パターンマッチングを使用する必要があります。
ほとんどのファイルは次から始めて.txt}
含めます18Jun22h
(ディレクトリにはこれらの文字列の1つを含めたいファイルはありません)。ディレクトリ内のファイルが確かに良いUnix名ではない場合、この文字列を含むすべてのファイルをどのように削除できますか?代わりに、ドット、スペース、アスタリスク、角かっこ、ダッシュが含まれます。私の最初の試みは、おそらく名前にこれらのシンボルがあるので失敗したでしょう。
ファイルが多すぎて1つずつ削除する方法はまったく役に立ちません。
はい、UNIXと互換性のないファイルを使用しない方が良いことがわかります。これが私が守るルールでもある。ただし、スクリプトが期待どおりに動作しません。
もう一度考えると、特定の時間の間に作成されたすべてのファイル(特定のディレクトリにある)を削除するのが簡単になる可能性があります。これにご協力いただきありがとうございます。
システム:Fedora 27
私はそれを試しましたが、 ~/*18Jun22h*
引数が長すぎるというエラーは、ファイル名の*拡張子と奇妙な作業に関連していると思います。代わりに、このパターンに一致するファイルが多すぎるからです(そうですか?)。 (RMが処理できるファイル数に上限があることを知りませんでした)。
ベストアンサー1
ホームディレクトリに少なくとも1つのスペースを含むファイルを見つけるには(専用):
find "$HOME" -maxdepth 1 -type f -name '*[ ]*'
...次の1つ以上を含めます*
。
find "$HOME" -maxdepth 1 -type f -name '*[*]*'
...最小[
または以下を含みます]
。
find "$HOME" -maxdepth 1 -type f -name '*[\[\]]*'
...上記の項目の1つが含まれています。
find "$HOME" -maxdepth 1 -type f -name '*[ *\[\]]*'
これらのファイルを削除するには、コマンドの-delete
最後に追加するか-exec rm {} +
。
find
サポートされていないシステムでは、-maxdepth 1
ホームディレクトリから実行してください。
find . -type d ! -name . -prune -o -type f -name '*[ *\[\]]*' -print