回答:
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/...
findwith 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"は、これが唯一の方法ですか?