連続した名前の欠落ファイルを見つける方法は? [コピー]

連続した名前の欠落ファイルを見つける方法は? [コピー]

1.txt、2.txtなどの名前で何千ものファイルがあります。これらのファイルの一部が欠落しています。どのファイルが欠落しているかを確認する最も簡単な方法は何ですか?

答え1

ub=1000 # Replace this with the largest existing file's number.
seq "$ub" | while read -r i; do
    [[ -f "$i.txt" ]] || echo "$i.txt is missing"
done

ubls | sort -nまたは、同様の操作を実行して適切な値を簡単に見つけることができます。これはファイルの出力形式によって異なりseq、特にここにはゼロはありません。

答え2

$ ls
1.txt  3.txt
$ seq 1 10 | xargs -I {} ls {}.txt >/dev/null
ls: cannot access 2.txt: No such file or directory
ls: cannot access 4.txt: No such file or directory
ls: cannot access 5.txt: No such file or directory
ls: cannot access 6.txt: No such file or directory
ls: cannot access 7.txt: No such file or directory
ls: cannot access 8.txt: No such file or directory
ls: cannot access 9.txt: No such file or directory
ls: cannot access 10.txt: No such file or directory
$

答え3

私が使う機能はこんな感じです

missing () {
  #ub gets the largest sequential number
  ub=$(ls | sort -n | tail -n 1 | xargs basename -s .txt)
  seq "$ub" | while read -r i; do
    [[ -f "$i.jpg" ]] || echo "$i.txt is missing"
  done
}

答え4

その他( bash):

comm -23 <(printf '%d.txt\n' {1..1000} | sort) <(ls *.txt |sort)

関連情報