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システムのデフォルト値であるsplit
GNUで使用できます。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