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つの点で間違いを犯しました。
半ランダムな
find
ファイル名を渡しています。二つパイプライン - でxargs
、次にsort
。可能であれば、-print0
null 出口を使用するfind
か、その中にジョブを挿入してください-exec
。Maureen Lawnsが示すように。もしファイル名にの文字が含まれていない場合は、コマンド置換を使用してechoを
$IFS
要求しているため、コマンドは失敗し続けますxargs
。コマンド置換はbasename
出力のデフォルト名を要求するため、存在しない可能性が@
あります。もっと近いのは次のとおりです。find /long/absolute/path -type f | xargs -L 1 -I @ basename @ | sort
...これにより、xargs
ファイル名をに引数として挿入できますbasename
。