WindowsシステムでLinuxコマンドを実行するために、WindowsのUbuntuでBashを使用しています。私はUbuntuと同じように動作するようで、すべての意図と目的にUbuntuを使用していると思います。
文字列を使用して、ディレクトリ/サブディレクトリ内の複数のファイルのすべての文字列を単一のファイルにダンプしようとしています。
私はそれを使用していますこのスレッドガイドとして
唯一の問題は、同じファイルをコピーし続ける無限ループからのように見える出力サイズが数十ギガバイトに達することが多いことです(プログラムを終了する前)。
私が試したことは次のとおりです。
> strings -e S ./* > all.bin.jp.txt
> strings -e S ./** > all.bin.jp.txt
> find . -type f -exec strings -e S {} \; >> all.jp.txt
> find ./* -type f -exec strings -e S {} \; >> all.jp.txt
> find . -type f -exec strings -e S {} \; > all.jp.txt
> for file in ./*; do strings -e S "$file" >> all.bin.txt; done
> for file in ./**; do strings -e S "$file" >> all.bin.txt; done
> for file in ./*/*; do strings -e S "$file" >> all.bin.txt; done
どのコマンドを実行したかは覚えていませんが、最後のコマンドが実際に完了し、Notepad ++で簡単に開かれたにもかかわらず、いくつかのギガバイトサイズのファイルを与えたようです。ところで、ファイルの約70%が同じ行が繰り返し繰り返されることがわかりました。
すべてのファイルとサブディレクトリのすべてのファイルをインポートするディレクトリ内でこのコマンドを実行しました。例えば、
Parent Directory
--Directory of Interest
---file1
---file2
---subdirectory1
------fileA1
------fileA2
---subdirectory2
------fileB1
そのため、関心のあるディレクトリの親ディレクトリからcdし、file1、file2、fileA1、fileA2、およびfileB1のすべての内容を、関心のあるディレクトリ内でfile1とfile2と同じレベルの単一ファイルにダンプするコマンドを実行します。 。
また、コマンドがどのレベルで実行されるのか混乱しています。コマンドが実行される場所またはファイルが親ディレクトリに直接配置されるかどうかは実際には気にしません。これが私が試したことです。通常、ディレクトリと関心のあるすべてのファイル内で、次のコマンドを使用して現在のディレクトリ内のすべてのファイルで文字列を実行するのに問題はありませんが、このサブディレクトリの問題により問題が発生しました。
strings -e S . > all.bin.jp.txt
strings -e S *.bin > all.bin.jp.txt
助けてください!以前に試したときにこの方法が機能していたことを覚えていますが、正しいコマンドを使用したことを覚えていません。以前にこのコマンドを使用したのと同じ種類のファイルを含むいくつかの異なるディレクトリで試しましたが、どこでも機能しないため、何が間違っているのかわかりません。
答え1
コマンドはうまく動作します。出力を別のディレクトリ、つまりそのサブディレクトリの1つではなく別のディレクトリに検索またはリダイレクトするには、ファイルリストから除外するだけfind
です。そうでなければ成長し続けます。all.jp.txt
.
strings
all.jp.txt
find . -type f ! -path ./all.jp.txt -exec strings -e S {} \; > all.jp.txt
または
find . -type f -exec strings -e S {} \; > /some/other/dir/all.jp.txt