回答:
find . ! -path . -type d
この特定のケース(.
)では、mindepth
ソリューションよりもゴルフの方が優れています(24文字と26文字)。ただし、!
。
他のディレクトリを除外するために、これはゴルフがうまくいかなくなり、DRYnessの変数を必要とします:
D="long_name"
find "$D" ! -path "$D" -type d
!
との間の私の決定木-mindepth
:
!
移植性のために使用します。.
ますか?コインを投げます。long_name
ますか?を使用し-mindepth
ます。find / ! -regex '/\(a\|b\)/.*'
、より簡単に、grepを使用してパイプできます。再帰、上記の非常に効率が悪いではないために、あなたが使用する必要があります-prune
:stackoverflow.com/questions/1489277/...
find
with grep
を使用してディレクトリを除外していましたが、親ディレクトリがまだ存在していたため、とにかくすべてが削除されました。
find
、あなたは接頭辞をチェックする必要があるだろう:stackoverflow.com/questions/17959317/...しかし、それを扱うことができるループのためのバッシュを:-)
\!
安全のため、感嘆符()をエスケープしたい場合があります。私のマシンのすべての例でman find
はそれが回避されているため、おそらくGood Idea™のようです。編集-だけは言っても、明示的にそれに気づいた:! expr True if expr is false. This character will also usually need protection from interpretation by the shell.
再帰の深find
さは-maxdepth
パラメーターで制御できるだけでなく、対応する-mindepth
パラメーターを使用して「上」から深さを制限することもできます。だから実際に必要なのは:
find . -mindepth 1 -type d
find . -mindepth 1 -maxdepth 1 -type d ...
find ./* <...>
第一レベルのドットファイルを無視してもかまわない場合に使用します(*
グロブはデフォルトでbashのこれらと一致しません。shoptビルトインの 'dotglob'オプションを参照してください:https ://www.gnu.org/software/bash /manual/html_node/The-Shopt-Builtin.html)。
Eclipse tmp#find。 。 。/画面 ./screen/.testfile2 ./.X11-unix ./.ICE-unix ./tmux-0 ./tmux-0/default
Eclipse tmp#find ./* 。/画面 ./screen/.testfile2 ./tmux-0 ./tmux-0/default
-exec
オプションでこのトリックを使用しないでください。たとえば、を試行するとfind dir/* -type d -exec rmdir {} \;
、エラーが表示されます。
rmdir
、ディレクトリが空ではないことを示している可能性が高いですfind
。
find /path/ ! -path "/path/first" ! -path "/path/second"
は、これが唯一の方法ですか?