質問

質問

注文する:

find . ! -name '*153902*.json' -exec ls -nls {} + | sort -k 10

返品:

12 -rw-rw-r-- 1 1000 1000  8359 May  6 15:11 ./Flights20180506-151026_KSEA_300.json
12 -rw-rw-r-- 1 1000 1000  8359 May  6 15:11 Flights20180506-151026_KSEA_300.json
44 -rw-rw-r-- 1 1000 1000 40999 May  6 15:39 Flights20180506-153902_KATL_0.json

応答のこのコードは、最初の2行のエントリが同じファイルを表すように見えることを示しています。違いは、ファイル名の前に「./」があることです。最初の項目は何を表していますか? 3番目のエントリに./がない理由は何ですか?

myname@Metropolitan:~/FlightAwareXML3/Thanksgiving18$ find . ! -name '*153902*.json' -exec ls -nlst {} \; | grep 153902_KATL_0
44 -rw-rw-r-- 1 1000 1000 40999 May  6 15:39 Flights20180506-153902_KATL_0.json

質問

  1. 詳細についてはGoogleをご覧ください。/フレーズの固有のキーワードは何ですか?

  2. ./を使用して最初の広告申込情報の応答を削除することは可能ですか?

答え1

プロセスは次のとおりです。

find . ! -name '*153902*.json'

次を返します。

.
./Flights20180506-151026_KSEA_300.json

次に、exec次を実行します。

ls -nls . ./Flights20180506-151026_KSEA_300.json

これにより、次の内容が提供されます.

12 -rw-rw-r-- 1 1000 1000  8359 May  6 15:11 Flights20180506-151026_KSEA_300.json
44 -rw-rw-r-- 1 1000 1000 40999 May  6 15:39 Flights20180506-153902_KATL_0.json

そして./Flights20180506-151026_KSEA_300.jsonそれ自体。


出力に表示される内容は、基準に一致するファイル名とパスを./連結した結果です。.この動作については後述する。POSIX ルックアップ文書:

各パスオペランドは、すべての末尾の文字を含むそのまま評価されます。階層で見つかった他のファイルへのすべてのパス名は、現在のパスオペランドが1で終わらず、パスオペランドに基づくファイル名

答え2

を使用して通常のファイルを見つけるには、find次のようにします-type f

find . -type f ! -name '*153902*.json'

これにより、特に.この場合、ディレクトリ名の一致を回避できます。

関連情報