存在できるファイルを削除する方法小文字大文字ケース
たとえば、file_name は次のようになります。
- STOCK.Repoまたは
- Stock.REPOまたは
- Stock.repoまたは
- 自己株式購入契約
- ...など
私は次を実行します:
rm -f $file_name
目的は、リモートシステムから小文字/大文字の可能性があるstock.repoファイルを削除することです。
答え1
Bash固有のソリューションの場合:
$ shopt -s nocaseglob
rm
その後、コマンドを実行してください。
このオプションをオフにするには、次を使用します。shopt -u nocaseglob
完全性を期すための選択肢ですが、あまりエレガントなソリューションを指摘します。
$ rm [sS][tT][oO][cC][kK].[rR][eE][pP][oO]
答え2
find
次のコマンドを使用してこれを実行できます。
find /path/to/directory -type f -iname stock\.repo -exec rm -f {} \;
しかし、非常に注意してください。 /path/to/directory で再帰的に動作します。永続的な損傷を引き起こす可能性がある本番システムでコマンドを実行する前に、maxlengthオプションの使用を検討してコマンドに慣れておく必要があります。
答え3
zsh
シェルを使用すると、ksh93
globごとに大文字と小文字を区別しない一致を実行できます。
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
空の引数として呼び出されます(おそらく引用符が原因のエラーである可能性があります。渡すことを意味するため)。いいえそれなら全然議論はありません)。これによりエラーが発生しますrm: cannot remove '': No such file or directory
が、少なくとも間違ったファイルを削除しません。
答え4
私は以下の方法を使ってみました。上記の答えはとても良いです。以下は私の試みです
ls -ltr | awk '{print $9}' | sed -n '/^STOCK.Repo$/Ip' |awk '{print "rm" " " $1}'| sh