폴더 A 및 (폴더 A 내의 폴더 B)의 모든 파일 이름을 찾는 방법은 무엇입니까?

폴더 A 및 (폴더 A 내의 폴더 B)의 모든 파일 이름을 찾는 방법은 무엇입니까?

파일의 모든 파일 이름을 나열하고 싶습니다폴더 A그리고 또 다른폴더 B~에폴더 A그리고 텍스트 파일로 저장해 보세요. 내가 사용하는 코드는 다음과 같습니다

ls -1 /home/CSV_XXX/* | grep ^'/home/CSV_XXX' >/home/Lists.txt

다음과 같은 파일이 있다고 가정해 보겠습니다.CSV_XXX디렉토리에'/홈/CSV_XXX' & 포함:

20161010
BDL_EXISTING_CARDS2_20161228.CSV
BDL_EXISTING_COLLATERAL_20161228.CSV
BDL_EXISTING_CUST_ADDRESS_20161228.CSV
.
.
.

'20161010'안에 폴더가 있어요CSV_XXX디렉토리'로/홈/CSV_XXX/20161010' & 포함하다:

BDL_EXISTING_CARDS2_20161010.CSV
BDL_EXISTING_COLLATERAL_20161010.CSV
BDL_EXISTING_CUST_ADDRESS_20161010.CSV
.
.
.

그러나 나는 내가 원하는 것을 얻지 못했습니다.

첫 번째 시도에서 얻은 결과는 다음과 같습니다.

/home/CSV_XXX/BDL_EXISTING_CARDS2_20161010.CSV
/home/CSV_XXX/BDL_EXISTING_COLLATERAL_20161010.CSV
/home/CSV_XXX/BDL_EXISTING_CUST_ADDRESS_20161010.CSV
.
.
.
/home/CSV_XXX/20161010:

20161010 폴더의 내용 목록이 없습니다.

또한 디렉토리를 어떻게 삭제할 수 있습니까?/홈/CSV_XXX/'마음이 바뀌어 목록에서 삭제하면 어떻게 되나요?

단지 목록(포함20161010):

BDL_EXISTING_CARDS2_20161228.CSV
BDL_EXISTING_COLLATERAL_20161228.CSV
BDL_EXISTING_CUST_ADDRESS_20161228.CSV
.
.
.

답변1

find명령을 사용하는 것이 더 나을 수도 있습니다.

예를 들어

find /home/CSV_XXX -type f -print

CSV_XXX 디렉터리 아래의 모든 디렉터리에 있는 모든 파일이 반복적으로 나열됩니다.

특정 패턴과 일치하는 파일만 원하는 경우 다음과 같이 할 수 있습니다.

find /home/CSV_XXX -type f -name '*.csv' -print

다음으로 끝나는 파일 이름만 인쇄됩니다..csv

목록에 디렉터리를 포함하려면 해당 -type f부분을 건너뛰면 됩니다.

디렉토리 접두사를 제거하십시오.

( cd /home/CSV_XXX ; find * -type f -name '*.csv' -print )

답변2

기본적으로 ls재귀는 없습니다. -R하위 디렉터리에 놓이도록 하려면 플래그를 추가해야 합니다 . 기본적으로 제공되는 전체 경로 이름을 제공하지는 않지만 이것이 find더 나은 명령이라는 것을 알 수 있습니다 .lsfind

목록 출력에서 ​​파일을 제거하려면 grep -v.

ls및 매뉴얼 페이지에서 자세한 내용을 find확인할 수 있습니다 grep.

관련 정보