bashscriptで絶対パスを使用して検索|

bashscriptで絶対パスを使用して検索|

bashスクリプトで再帰的に見つける必要があります。どこでもbashスクリプトを呼び出すことができるので、絶対パスを使用する必要があります。時には、次のように絶対パスが非常に長くなり、出力が退屈する可能性があります。

#!/usr/bin/env bash
find /long/absolute/path -type f | sort

だから私はこれをしました:

#!/usr/bin/env bash
find /long/absolute/path -type f | xargs -L 1 -I @ echo $(basename @) | sort

ただし、これはデフォルト名を提供しません。私はどこで間違っているのか調べることができますか?

ベストアンサー1

あなたは2つの点で間違いを犯しました。

  1. 半ランダムなfindファイル名を渡しています。二つパイプライン - でxargs、次にsort。可能であれば、-print0null 出口を使用するfindか、その中にジョブを挿入してください-execMaureen Lawnsが示すように

  2. もしファイル名にの文字が含まれていない場合は、コマンド置換を使用してechoを$IFS要求しているため、コマンドは失敗し続けますxargs。コマンド置換はbasename出力のデフォルト名を要求するため、存在しない可能性が@あります。もっと近いのは次のとおりです。

    find /long/absolute/path -type f | xargs -L 1 -I @ basename @ | sort
    

...これにより、xargsファイル名をに引数として挿入できますbasename

おすすめ記事