単一ファイルの範囲を繰り返しコピーして新しいファイルに貼り付ける

単一ファイルの範囲を繰り返しコピーして新しいファイルに貼り付ける

10023行を含むファイルがあります。ファイルから1000行ごとにコピーして、1.txtや2.txtなどの名前の新しいファイルに貼り付けたいです。 1.txt 2.txtなどのファイルを新しく作成されたフォルダ1、2などに移動したいと思います。

誰でも助けることができますか?

ありがとう

ベストアンサー1

それがsplit目的です。ファイルを1000行(最後の行の場合はそれ以下)の複数のファイルに分割するには、次のようにします。

split -d -l 1000 file '' 

これにより、ファイルは追加の接尾辞-l 1000として数字の接尾辞.txtと空の接頭辞('')を含むそれぞれ1000行()のファイルに分割されます。 10023行を含むファイルの結果は00、、、...、という名前の11個の01ファイルになります10

$ wc -l file
10023 file
$ split -d -l 1000 --additional-suffix='.txt' file ''
$ ls
00.txt  02.txt  04.txt  06.txt  08.txt  10.txt
01.txt  03.txt  05.txt  07.txt  09.txt  file

は移植可能で-dはなく、--additional-suffixお使いのシステムでは機能しない可能性があります。これは、Linuxシステムのデフォルト値であるsplitGNUで使用できます。split

これで、必要に応じてファイルを移動できます。

for i in {00..10}; do
    mkdir -p $i
    mv "$i".txt "$i"/
done

前にゼロが必要ない場合は、名前を変更できます。

for i in {00..10}; do
    mkdir -p $i
    mv "$i".txt "$i"/"${i##0}".txt
done

最後に、GNU を想定して 0 ではなく 1 から始めるには、split次のようにします。

split -d --numeric-suffixes=1 -l 1000 --additional-suffix='.txt' file ''

これで以下が生成されます。

01.txt  03.txt  05.txt  07.txt  09.txt  11.txt
02.txt  04.txt  06.txt  08.txt  10.txt 

おすすめ記事