誰でも以下のSolarisコマンドを提供できますか?
$ find . -type f -printf '%f,%h\n'
コードを実行すると、「printf findオプションエラー:[-H | -L]パスリスト述語リストエラー」が発生します。
Solaris UNIX 環境は Printf をサポートしません。
詳細については、次のリンクを参照してください。
http://explainshell.com/explain?cmd=find+sample+-type+f+-printf+%27%25f%2C%25h%5Cn%27
事前にありがとう
答え1
これ-printf
はGNU findに固有のものであるため、GNU findを実行していないプラットフォームでは使用できません。別途インストールしない限り、非組み込みLinuxおよびCygwinでのみGNU findを実行します。
あなたはできますSolaris に GNU 検索をインストールする。
あるいは、移植可能な機能のみを使用するようにスクリプトを再構築することもできます。普遍的な翻訳方法はありません-printf
。指定子によって異なるため、異なるツールが必要です。%f
との場合は%h
ファイル名の一部なので簡単です。ファイル名がシェル変数にある場合は、パラメータx
拡張構成を使用して、デフォルト名(接頭辞が削除されている*/
)とディレクトリ名(接尾辞が削除されている/*
)を抽出できます。
find . -type f -exec sh -c 'for x do printf %s,%s\\n "${x##*/}" "${x%/*}"; done' sh {} +