我在 Windows 上的 Ubuntu 上使用 Bash 在 Windows 系统上运行 Linux 命令。它的工作方式似乎与 Ubuntu 一样,所以无论出于何种目的,我想我都在 ubuntu 上。
我正在尝试使用字符串将目录/其子目录中的一堆文件中的所有字符串转储到单个文件中。
我在用着这个线程作为指导
唯一的问题是我的结果通常会生成数十GB大小的输出(在我终止程序之前),这些输出似乎来自一遍又一遍复制相同文件的无限循环。
这是我尝试过的:
> 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
我不记得是哪个命令执行的,但我认为最后一个命令实际上完成了,并给了我一个几 GB 的文件,尽管它可以在 Notepad++ 中轻松打开。但我注意到该文件的 70% 左右都是同一行一遍又一遍地重复。
我已在想要获取所有文件以及子目录中的所有文件的目录内运行这些命令。例如,
Parent Directory
--Directory of Interest
---file1
---file2
---subdirectory1
------fileA1
------fileA2
---subdirectory2
------fileB1
因此,我从父目录中输入 cd 感兴趣的目录,然后运行命令,我希望将 file1、file2、fileA1、fileA2 和 fileB1 中的所有内容转储到也在感兴趣的目录内的同一级别的单个文件中作为文件 1 和文件 2。
我也对在什么级别执行命令感到困惑。我实际上并不关心在哪里执行命令,或者文件是否直接放置在父目录中 - 这正是我尝试过的。我通常不会在当前目录中的所有文件上运行字符串时遇到问题,使用目录内的以下命令和所有感兴趣的文件,但这个子目录的事情让我难住了。
strings -e S . > all.bin.jp.txt
strings -e S *.bin > all.bin.jp.txt
请帮我!我记得我以前尝试过时这曾经有效,但我不记得我使用的确切命令。我已经在几个不同的目录上尝试过它,其中包含我之前使用过此命令的相同类型的文件,但它对它们中的任何一个都不起作用,所以我不知道出了什么问题。
答案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