Linuxでは、ファイル名に基づいて多数のファイルをディレクトリに移動する

Linuxでは、ファイル名に基づいて多数のファイルをディレクトリに移動する

私のLinuxサーバーのディレクトリには、次の名前パターンを持つ多くのファイルがあります。

1_file.txt
2_file.txt
3_file.txt
...
1455728_file.txt

最初の100000個のファイルを移動する方法はありますか(1_file.txt〜100000_file.txt) ディレクトリ入力1_100000、2番目の100000ファイル(100001_file.txt~200000_file.txt) ディレクトリ入力100001_200000、など…?

ベストアンサー1

未テスト

私は次のことをします:

#!/bin/bash
bottom=0
while [[ $bottom -lt 150000 ]] ; do
    myfirst=$((bottom + 1))
    mylast=$((bottom + 100000))
    bottom=$((bottom + 100000))

    dir="${myfirst}_$mylast"
    [[ -d "$dir" ]] || mkdir "$dir"
    seq $myfirst $mylast | \
        while read p ; do
            q="${p}_file.txt"
            [[ -f "$q" ]] && echo "$q"
        done | \
            xargs --no-run-if-empty  echo mv -t "$dir"

done

実際にしたい場合は削除してくださいechoecho mv

おすすめ記事