パターンに欠落しているファイル名のリスト

パターンに欠落しているファイル名のリスト
  1. 数字で始まり、ハイフンでリンクされたファイルがたくさんあります。たとえば、

    001 - awesomesauce
    216 - stillawesomesauce
    
  2. サブディレクトリで構成されています。

bashもしそうなら、このディレクトリ内のスクリプトまたはいくつかの組み込みビューを使用して番号が順番に欠落していることを確認するにはどうすればよいですか?つまり、上記の例では、私が行方不明であると報告することです002128可能であることを知り、ls {000..216}\ -*ファイルを一覧表示して見つからない場合はエラーが発生します。しかし、欠落しているファイルをインポートして再帰的に実行するより良い方法はありますか?

答え1

設定でgnu以下を実行できます。

myarr=( $(find . -type f -name '[0-9][0-9][0-9]*' -printf '%f\n' | cut -c1-3 | sort -n) )
join -v1 <(seq -w ${myarr[-1]}) <(printf '%s\n' ${myarr[@]})

またはを使用して、zsh次のように試すことができます。

myarr=( **/[0-9][0-9][0-9]*(.one_'REPLY=${${REPLY:t}:0:3}'_) )
mynums=( {001..$myarr[-1]} )
print -l ${mynums:|myarr}

各ファイル名から数字(最初の3桁)を抽出してソートし、結果を配列に保存しますmyarr。次に、最後のインデックス値(つまり、ファイル名から抽出された最大数)から始まる数値をmynums含む別の配列を設定し、次を使用します。001パラメータ拡張myarr拡張子から値を削除しますmynums

答え2

私は書いたfindmissingPythonスクリプトそれがまさにそのことです。 macOSで開発しましたが、すべてのプラットフォームで実行する必要があります。 Python 2.7と3.6で実行をテストしました。

私のスクリプトが実際に動作する様子は次のとおりです。

$ cat sampleFile.txt | python findmissing.py -p "DSC003\.(\d+)"
12
13
14
16
17
18
22
23
24

...次のファイルが付属すると出力されます。

Id                                  Name         Type   Size     Created
1Dgt5ZFKT3zilwPZdiPyPmhM0Y3Fz_xo8   DSC003.010   bin    1.1 GB   2018-06-12 16:57:14
16QPadXBXPGIwiRhzMFRuY7tZkdIlJ1DI   DSC003.011   bin    1.1 GB   2018-06-12 16:54:57
1zD492J3F42Azeoct82DMlXRRuWA8AUiY   DSC003.015   bin    1.1 GB   2018-06-12 17:32:12
1bah8OM_F49BNeoct8M2DlXRRuOD8AUiY   DSC003.019   bin    1.1 GB   2018-06-12 17:24:41
1eZfY4qn3Ol6w1BFafQn6YDy1uOU82NNA   DSC003.020   bin    1.1 GB   2018-06-12 17:21:46
1x-P84Jq1cyuJCW2Opvy4m_qOjOHvAKtA   DSC003.021   bin    1.1 GB   2018-06-12 17:27:16
1O4TjR8Cl31A5qxHkyVmhmukp4dofCO3t   DSC003.025   bin    1.1 GB   2018-06-12 17:36:00

関連情報