Xファイルを含むフォルダー内のYファイル(ここでX> Y)をテキストファイルにリンクする必要があります。接続する必要があるファイル名(Yファイル)があります。
答え1
このcat
コマンド(man cat
詳細については、参考文献を参照)を使用してテキストファイルをリンクできます。
新しいファイルを作成したい場合
cat [FILE1] [FILE2]... > new_file
または、既存のファイルに追加するには、次のように使用します。
cat [FILE1] [FILE2]... >> file
答え2
ファイルにY個のファイル名がリストされている場合とlist
の単純な組み合わせで十分です。xargs
cat
xargs cat <list >>concatenation_of_files
注意してファイルを1行に1つずつ一覧表示する場合(ファイル名の空白の問題を避けるため)、区切り-d
文字オプションを追加するだけです。
xargs -d'\n' cat <list >>concatenation_of_files
(これはconcatenation_of_files
存在しないか、最初は空であると仮定します。)
答え3
答えはbashを使うことです。
ディレクトリからjsonファイルをリンクしているとしましょう。
cat *json > all.json
サブディレクトリを含める:
shopt -s globstar
cat **/*json > all.json
ただし、数千から数百万のファイルがある場合、次の問題が発生します。
bash: /bin/cat: Argument list too long
この場合、以下を実行すると、現在処理中のファイルも出力されます。
shopt -s globstar
rm concat.json
find . -path "**/*.json" | while read -r file; do
echo -ne "\\r$file"
cat "$file" >> concat.json
done
この質問には次のように投稿されました。この他の質問は締め切りました。
答え4
(これは本当に遅かったことを知っており、実際に答えではなく、これを行う場合の提案です。)
関連付けたいファイルと同じファイル拡張子を使用しないでください。
cat *.json > all.json.txt
それから戻ってきて...
mv all.json.txt all.json
これが問題の問題を解決するかどうかは実際にはわかりませんが、ループの問題を回避できます。