時々、どのパッケージが原因であるか(例:xfce4またはthunar?)、その命名規則が何であるか(.app対.application対.some_old_name対.config / app)、それを見つけるのではなく、不明なドットファイルで犯人を見つける必要がありますする時があります。 ...)、私は速くて汚い方法が欲しい。
me@here:~$ grep -IR .* -e culprit
しかし、この迅速で汚い方法は愚かな方法でもあります。数分後、これも私たちがここにいることを意味することに気づきました.*
。..
時々、より遅くて汚れた変形を使用することもあります。
me@here:~$ grep -IR /home/me -e culprit
これは信じられないほど愚かな仕事であることが判明しました。特にmount
自分自身のための巨大な、または遠い目標があるとき、さらにそうです$HOME
。残念ながら、迅速でクリーンで正しい方法が見つかりません。 (頭がどんどん疲れています。)
ワイルドカード拡張でこれを達成できますか?つまり、バリアントが.*
一致しません..
(そして../..
...)?
ベストアンサー1
Linuxを使用している場合は試してみてください。
grep -IR --exclude-dir=".." culprit .*
シェルワイルドカードについて質問した後、私が最初に考えたのは.[!.]* ..[!.]*
次のとおりです。
grep -IR culprit .[!.]* ..[!.]*
grep
.で始まるファイルがない場合は、エラー終了が発生します..
。この問題を解決するには、以下を追加して不足しているファイルを無視するように指示でき-s
ますgrep
。
grep -IRs culprit .[!.]* ..[!.]*
または、次に始まるファイルがない場合は、bash
オプションzsh
nullglob
を使用して空のファイルに展開します。..[!.]*
..
shopt -s nullglob # for bash
setopt nullglob # for zsh
grep -IR culprit .[!.]* ..[!.]*
上記のすべての方法が失敗した場合は、常にfind
find . -path "./.*" -exec grep culprit {} +