対象システム:LinuxおよびOSX。オリジナル コード これはUbuntu 16.04では動作しますが、OS Xでは動作しませんが、うまくいきません。 POSIX 規格
gfind ~ ! -readable -prune -o -type f -name "*.tex"
どこで
!
についてです プライマリの否定。単項NOT演算子-readable
TODOこれはPOSIXではないようです-prune
についてです プライマリは常に真と評価されます。ディレクトリであれば、findは現在のパス名を降順にしないようにします。 -depthプライマリを指定した場合、-pruneプライマリは無効になります。-o
についてです 原色の交代OR演算子最初の式が真の場合、2番目の式は評価されません。 そうでなければ、これです。-type
型については、こちらのファイルf
-name
filenameについては、ここ*.tex
出力
gfind: paths must precede expression: type
Usage: gfind [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
プロポーザルを修正
つかいます -perm 0744
の代わりに -readable
しかしそれが同等かどうかわからない
gfind ~ ! -perm 0744 -prune -o -type f -name "*.tex"
出力: /Users/masi
。予想される出力:.texファイルのリスト。
どのようにあなたは読みやすくするために正しくfindのパーミッションを設定することができますか?
4
さてあなたはどこから見つけたのですか? ではない OSXの一部(一般的にあなたの他の投稿からのLinuxはUnixではありません)あなたがLinuxに固執したいのであればそれらは異なります:)あなたが一般に同じことを望むならGNU拡張を使わないでください
—
Mark
私が言ったように、GNU拡張を使わない - いくつか異なることがあるがBSDは通常サブセットである - すなわちLinuxが正しい方法であると仮定しないでください、
—
Mark
あなたが本当に移植可能なスクリプトを書きたいのなら、私はあなたがここから始めることを勧めます - pubs.opengroup.org/onlinepubs/009695399/utilities/contents.html シェルとそのユーティリティのPOSIX標準を学ぶため。私がOS Xで書いたほとんどのスクリプトはLinuxで動くでしょう。
—
fd0
私はあなたにその仕事をさせるつもりです。を追加
—
fd0
-user
オプション(それは変数になることができます) -perm
読みやすいです。
行列で
—
fd0
find . -perm +0666
たとえば、所有者が呼び出し元ではなく、その所有者だけがファイルを読み取ることができるファイルをリストすることができます。 -perm
ファイルの分類に関係なくパーミッションビットを読み込みます。だから、建物 find
のロジックは、 -user
そして -group
と一緒にオプション -perm
オプションもちろん、これは過度に複雑でデバッグが困難な場合があります。テストする時間があれば、解決策を投稿します。