web-dev-qa-db-ja.com

小文字/大文字の可能性があるファイルを削除する方法

小文字/大文字大文字と小文字の可能性があるファイルを削除する方法

たとえば、file_nameは次のようになります。

  • STOCK.Repoまたは
  • Stock.REPOまたは
  • stOCK.repoまたは
  • stock.repo
  • ...など

私は実行します:

 rm -f $file_name

目標は、リモートマシンで小文字/大文字になる可能性のあるstock.repoとしてファイルを削除することです

3
yael

Bash固有のソリューションの場合:

$ shopt -s nocaseglob

次に、rmコマンドを実行します。

このオプションの設定を解除するには、shopt -u nocaseglobを使用してください。

完全を期すために、私は代替の、しかしあまりエレガントではない解決策を指摘します:

$ rm [sS][tT][oO][cC][kK].[rR][eE][pP][oO]
5
fpmurphy

findコマンドを使用して実行できます

find /path/to/directory -type f -iname stock\.repo -exec rm -f {} \;

ただし、十分に注意してください。/path/to/directoryから再帰的に動作しています。 maxdepthオプションの使用を検討し、永続的な損傷が発生する可能性のある本番システムで実行する前に、このコマンドをよく理解しておく必要があります。

5
DevilaN

zshおよび_ksh93_シェルを使用すると、グロブごとに大文字と小文字を区別しないマッチングを行うことができます。

  • zsh

    _set -o extendedglob # best in ~/.zshrc
    rm -- (#i)$filename
    _
  • _ksh93_:

    _rm -- ~(i:"$filename")
    _

    ただし、一致するファイルがない場合は、リテラル~(i:stock.repo)rmに渡されることに注意してください。そして、そのファイルが存在する場合、そのファイルは削除されます(上記のzshはエラーで失敗し、その場合はrmをまったく呼び出しません)。

    ただし、Nフラグに加えてiフラグを設定することもできます。

    _rm -- ~(Ni:"$filename")
    _

    次に、一致しない場合、rmが呼び出されますが、引数は空です(おそらく、引数を渡すことを意図しているため、引用符によって引き起こされるバグですno引数) 。その後、_rm: cannot remove '': No such file or directory_のようなエラーが発生しますが、少なくとも間違ったファイルは削除されません。

0