だから、私はたくさんのファイル(167k)を持っていて、ここにあるSergのスクリプトのおかげで、今では適切な順序になっています--- https://askubuntu.com/a/686829/462277 。
そして今、私はファイル名間のギャップを見つける必要があります、違いは15以上でなければなりません
Aaaa.bb - 000002 tag tag_tag 9tag
Aaaa.bb - 000125 tag tag_tag 9tag
Aaaa.bb - 000130 tag tag_tag 9tag
それらはすべて同じように始まり、異なる終わりを持っています。
すべてが外付けHDDにあります。
find . -maxdepth 1 -type f -regextype posix-awk -iregex ".*[:digit:]"| sort | awk '{ if ( ($3 - previous) > 15 ) print previous"**"$3}{ previous=$3 }'
上記のコードはfind
コマンドを使用します。これは、現在のディレクトリ内の数字を含むすべてのファイルを照合し、それらを並べ替えて、awk
に渡します。 awk
はリストを調べ、フィールド3の各数値を変数previous
に格納し、次の項目でprevious
を現在の数値と比較します
python(正確にはpython3)のバージョン。
以下のプログラムをdiff_filename.py
という名前で保存し(実行可能にします)、次のように使用します。
$ ./diff_filename.py the/directory/containing/the/files
プログラムは、比較する数値が常にファイル名の同じ位置にあることを前提としています(インデックス10:16)。
今ではかなり冗長で、違いを含めて正しいファイル名を出力します。最小の違いを尊重しないファイル名にヒットするとすぐに、それを出力して停止します。
ソースコードは次のとおりです。
#!/usr/bin/python3
# -*- coding: utf-8 -*-
'''
usage: ./diff_filename.py the/directory/containing/the/files
'''
import os
import sys
MIN_DIFF = 15
the_dir = sys.argv[1]
sorted_files = sorted(os.listdir(the_dir))
last_number = None
last_file = None
for current_file in sorted_files:
current_number = int(current_file[10:16])
if last_number is None:
last_number = current_number
last_file = current_file
continue
diff = current_number - last_number
if diff < MIN_DIFF:
print('fail! "{}" and "{}" do not respect MIN_DIFF={}'.format(
last_file, current_file, MIN_DIFF))
break
else:
print('ok! "{}" and "{}" diff={}'.format(last_file, current_file, diff))
last_number = current_number
last_file = current_file