次の find コマンドを作成しました。
find ./ \( -path "*work*" -o -path "*ncvlog_lib*" \) -prune -o -type f -not
-name "*.wlf" -not -name "*.vcd" -not -name "*.sim" -not -name "*vcs*"
コマンドは1行で呼び出されます。私は読みやすさのためにここでやめました。
唯一の問題は、-type fパラメーターを指定したにもかかわらず、切り捨てられたディレクトリ名を印刷することです。出力例:
./cdl2verilog_files/test_synth/work
./cdl2verilog_files/test_synth/some_file1.txt
./cdl2verilog_files/test_synth/something_else.txt
./cdl2verilog_files/test_synth/another_file.v
work
ディレクトリです。その内容は出力に含まれていないため、必要に応じて剪定操作を実行できます。ただし、ディレクトリ自体は印刷されます。解決策が見つからないようです。どんなアイデアがありますか?
ところで私はtcshを使用しています。
ベストアンサー1
-prune
ディレクトリの内容は除外しますが、ディレクトリ自体は除外しません。唯一の場合、-prune
これが起こります行動コマンドとしてfind
。他の操作(-exec
または-print
)がある場合、切り捨てられたディレクトリ名は出力されません。したがって、-print
コマンドの最後に明示的なコマンドを追加するだけですfind
。たとえば、
find ./ \( -path "*work*" -o -path "*ncvlog_lib*" \) -prune -o -type f \
-not -name "*.wlf" -not -name "*.vcd" -not -name "*.sim" -not -name "*vcs*" \
-print
find
ただし、-regex
複数の述語の代わりに単一の述語を使用してコマンドを短縮/簡素化できます-name
。例えば
find ./ \( -path "*work*" -o -path "*ncvlog_lib*" \) -prune -o -type f \
-regextype awk -not -regex '.*\.(wlf|vcd|sim)$|.*vcs.*' -print
これにより、上記の最初のバージョンと同じ出力が生成されます。