0

私はこのコマンドをどこかで読みました..それが何であるかわかりません。

find . -maxdepth 1 -type f -follow | cut -d/ -f2 | xargs -I % readlink -f  % | cut -d\/ -f7,14 | sed 's/\// /g' | sort

私はそれを検索し、 maxdepth と type の意味を取得しましたが、 、 、および については取得しませ-followcut -f -f2でしreadlinksed

とは-f7,14どういう意味ですか?

4

1 に答える 1

1

それを打破することが最善のアプローチです。

まず、現在のディレクトリで find コマンドが実行されます。、値 1 とファイルのみに制限された検索タイプ (タイプ f) を使用して、検索を現在のディレクトリのみに深さまで制限し、-follow を使用してシンボリック リンクを取得する場合に備えて、実際のファイル プロパティを使用します。つまり、シンボリック リンクをたどります。

つまりここまで

探す 。-maxdepth 1 -タイプ f -follow

そこから単純な切り取り - 区切り文字が / (-d/) の場合は 2 番目のフィールド (-f2) を切り取り、ドット (find のリストから表示される現在のディレクトリ) を取り除きます。

それはここまでです。-maxdepth 1 -タイプ f -follow | カット -d/ -f2

次に、出力を xargs にパイプし、コマンド readlink を実行して、正規化モードでシンボリック リンクにリンクされた実際のファイルを出力します (チェーン リンク ファイルの名前を指定します)ここで例を確認してください

次に、区切り文字が「\」の場合、出力が cut に渡されて 7 番目と 14 番目のフィールドが取得されます。

その深さとのリンクがある場合にのみ、ここからの出力が表示されますが、可能です。

次に、sed 's/// /g' を使用すると、出力で "\" が検索され (エスケープは / によって行われます)、" " 空白に置き換えられます。sed のグローバル検索および置換モード - すべての \ を " " 空白に置き換えます。

コマンドの意図は何ですか? シンボリックリンクを探して、実際のリンクされたファイルを見つけると思います。7番目と14番目のフィールドだけを切り取り、スラッシュを置き換える理由がよくわかりません。おそらく、ユーザーはディレクトリの特別な深さを探していました。

于 2013-09-18T20:06:08.047 に答える