파일의 모든 파일 이름을 나열하고 싶습니다폴더 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
더 나은 명령이라는 것을 알 수 있습니다 .ls
find
목록 출력에서 파일을 제거하려면 grep -v
.
ls
및 매뉴얼 페이지에서 자세한 내용을 find
확인할 수 있습니다 grep
.