私は数百のファイル(それぞれに複数の文字を含む)を含むディレクトリを持っています。私はそれらをセパレータ "|"で1つのファイルに結合したいと思います。ディレクトリ内のすべてのファイルを区切り記号で区切ります。
私は
find . -type f | (while read line; do; cat $line; echo "|"; done;) > output.txt
を試してみましたしかし、それは無限ループを作成しました。
私は数百のファイル(それぞれに複数の文字を含む)を含むディレクトリを持っています。私はそれらをセパレータ "|"で1つのファイルに結合したいと思います。ディレクトリ内のすべてのファイルを区切り記号で区切ります。
私は
find . -type f | (while read line; do; cat $line; echo "|"; done;) > output.txt
を試してみましたしかし、それは無限ループを作成しました。
-not -name output.txt
を使用してfind
の出力からoutput.txt
を除外することができます(または、以下のコメントで既に指摘したように、出力ファイルをターゲットディレクトリの外に置くだけです)。例えば
:
find . -type f -not -name output.txt -exec cat {} \; -exec echo "|" \; > output.txt
私はまた、我々は、単一のfind
コールを使用して全体のことを行うことができますので、-exec
のparamsのカップルとあなたのwhile/cat/echo
を交換する自由を撮影しました。
*それは(output.txtと、問題は実際には関係ありません)Googleの検索結果の最初なので、質問のタイトルに答えるために:
これは私がファイルをJavaアプリケーションを実行するために.jar
ファイルを結合するために使用するものですlib/
に:
EntityManagerStoreImpl
[email protected]:~/work/TOOLS/JawaBot/core$ ls
catalog.xml nbactions.xml nb-configuration.xml pom.xml prepare.sh resources run.sh sql src target workdir
[email protected]:~/work/TOOLS/JawaBot/core$ echo `ls -1` | sed 's/\W/:/g'
catalog:xml:nbactions:xml:nb:configuration:xml:pom:xml:prepare:sh:resources:run:sh:sql:src:target:workdir
ファイルリストはfind ...
か何かに置き換えてもよいことは勿論です。
echo
は改行をスペースで置き換えるためのものです。
最終形態:
java -cp $(echo `ls -1 *.jar` | sed 's/\W/:/g') com.foo.Bar
ああ、ポインタに感謝。これは私のために働いた 'find。タイプf | (読んだ行; do; cat $ line; echo "|"; done;)> ../ output.txt' – Dogbert
@Dogbertそれはうまくいくでしょう:)。ところで、 'do'の後にセミコロンは必要ありません。'(while read line; do cat $ line; echo "|"; done;) ' –
私はUNIXを学んでいるだけです。 – Dogbert