小文字/大文字大文字と小文字の可能性があるファイルを削除する方法
たとえば、file_nameは次のようになります。
私は実行します:
rm -f $file_name
目標は、リモートマシンで小文字/大文字になる可能性のあるstock.repoとしてファイルを削除することです
Bash固有のソリューションの場合:
$ shopt -s nocaseglob
次に、rm
コマンドを実行します。
このオプションの設定を解除するには、shopt -u nocaseglob
を使用してください。
完全を期すために、私は代替の、しかしあまりエレガントではない解決策を指摘します:
$ rm [sS][tT][oO][cC][kK].[rR][eE][pP][oO]
find
コマンドを使用して実行できます
find /path/to/directory -type f -iname stock\.repo -exec rm -f {} \;
ただし、十分に注意してください。/path/to/directoryから再帰的に動作しています。 maxdepthオプションの使用を検討し、永続的な損傷が発生する可能性のある本番システムで実行する前に、このコマンドをよく理解しておく必要があります。
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
_のようなエラーが発生しますが、少なくとも間違ったファイルは削除されません。