次のコマンドを使用しています
find . -type f -exec sed -i 's/_backpack.html/_backpack_cal.html/g' {} +
プロジェクトのすべての "_backpack.html"文字列を置き換えたいのですが、_backpack_cal.html
これが起こります。
しかし問題は、私のディレクトリ.git
のファイルも編集してGitが破損することです。他のすべてのサブディレクトリの処理中にfind
自分のディレクトリに触れないようにするにはどうすればよいですか?.git
答え1
あなたが使用できる:
find . -name .git -prune -o -type f -exec sed -i 's/_backpack.html/_backpack_cal.html/g' {} +
私が追加した部分は、デフォルトで-name .git -prune
「ディレクトリ名がある場合、.git
そのディレクトリを処理しません」という意味です。
また、最初のステートメントがfalseの場合(つまり、処理中のファイル名がディレクトリーの場合)にのみステートメントを実行するという追加事項-o
(意味)に注意してください。or
.git
もちろん、実際にコマンドを実行する前にそれをテストする必要があります。たとえば、-exec ...
いくつかを 。-print
答え2
除外する場合.git
:
find . ! -path '.git/*' -type f
すべての隠しファイルとディレクトリを除外するには:
find . ! -path '*/.*' -type f