特定のファイルを1つのファイルにリンクする

特定のファイルを1つのファイルにリンクする

Xファイルを含むフォルダー内のYファイル(ここでX> Y)をテキストファイルにリンクする必要があります。接続する必要があるファイル名(Yファイル)があります。

答え1

このcatコマンド(man cat詳細については、参考文献を参照)を使用してテキストファイルをリンクできます。

新しいファイルを作成したい場合

cat [FILE1] [FILE2]... > new_file

または、既存のファイルに追加するには、次のように使用します。

cat [FILE1] [FILE2]... >> file 

答え2

ファイルにY個のファイル名がリストされている場合とlistの単純な組み合わせで十分です。xargscat

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

これが問題の問題を解決するかどうかは実際にはわかりませんが、ループの問題を回避できます。

関連情報