Windows의 우분투에서 bash에서 문자열을 찾으려고 하면 출력 파일이 충돌합니다.

Windows의 우분투에서 bash에서 문자열을 찾으려고 하면 출력 파일이 충돌합니다.

Windows 시스템에서 Linux 명령을 실행하기 위해 Windows의 Ubuntu에서 Bash를 사용하고 있습니다. 우분투와 같은 방식으로 작동하는 것 같아서 모든 의도와 목적을 위해 우분투를 사용하고 있다고 생각합니다.

문자열을 사용하여 디렉터리/하위 디렉터리에 있는 여러 파일의 모든 문자열을 단일 파일로 덤프하려고 합니다.

나는 그것을 사용하고 있다이 스레드가이드로써

유일한 문제는 동일한 파일을 계속해서 복사하는 무한 루프에서 나오는 것처럼 보이는 출력 크기가 수십 기가바이트에 달하는 경우가 많다는 것입니다(프로그램을 종료하기 전).

내가 시도한 것은 다음과 같습니다.

> 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

명령은 잘 작동합니다. 출력을 다른 디렉터리, 즉 해당 하위 디렉터리 중 하나가 아닌 다른 디렉터리로 찾거나 리디렉션하려면 파일 목록에서 제외하기 find만 하면 됩니다 . 그렇지 않으면 계속 성장하고 성장할 것입니다 .all.jp.txt.stringsall.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

관련 정보