1.csv、2.csv、3.csv、...89.csv... n.csv という名前のファイルが与えられた場合、bash シェル スクリプトでそれらを番号順に (1 から n) に追加するにはどうすればよいですか? ソリューションのワンライナーはありますか?
1478 次
2 に答える
2
ファイルの名前が先頭にゼロが付いている場合は、より簡単になります。つまり、
cat [0-9].csv [0-9][0-9].csv .... > new.csv
しかし、与えられた真の数値順序を取得するのはそれほど難しくありません
ls -1
1
10
11
12
13
2
20
21
3
7
8
9
(両方のサンプルで、ls のオプションは文字 L (l) ではなく、数字の 1 (1) であることに注意してください)
と
ls -1 [0-9]* | sort -n
1
2
3
7
8
9
10
11
12
13
20
21
それから
cat $( ls -1 *.csv | sort -n ) > new.csv
すべてのcsvファイルに番号が付けられていると仮定します。
1000 個を超えるファイルがある場合、シェルでのファイル arg 処理が機能しなくなる可能性があるため、xargs を正しく使用するために新しい質問を投稿する必要があります。
何が起こっているかを確認するには、シェルのデバッグ/トレースの使用を追加します
set -vx # to turn on
set +vx # to turn it off
.
IHTH。
于 2012-11-10T01:38:30.017 に答える
0
インライン パラメータを持つ 1 つのライナー (N を最大ファイル番号に置き換える必要があります)。スクリプトは存在しないファイルをスキップするため、いくつかのファイルを順番に見逃すと、エラーは発生しません:)
for i in `seq 0 N`; do test -f $i.csv && cat $i.csv; done >> result.csv
またはパラメーターを使用してスクリプトを作成する
#!/bin/bash
for i in `seq 0 $1`
do
if [ -f "$i.csv" ]
then
cat $i.csv >> $2
fi
done
使用法: ./script.sh MAX_CSV_ID RESULT_FILE
例: ./script.sh 89 new.csv
于 2012-11-12T00:11:30.987 に答える