数字で始まり、ハイフンでリンクされたファイルがたくさんあります。たとえば、
001 - awesomesauce 216 - stillawesomesauce
サブディレクトリで構成されています。
bash
もしそうなら、このディレクトリ内のスクリプトまたはいくつかの組み込みビューを使用して番号が順番に欠落していることを確認するにはどうすればよいですか?つまり、上記の例では、私が行方不明であると報告することです002
。128
可能であることを知り、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
私は書いたfindmissing
Pythonスクリプトそれがまさにそのことです。 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