파일 이름만 나열하고 디렉터리와 하위 디렉터리를 삭제하는 방법

파일 이름만 나열하고 디렉터리와 하위 디렉터리를 삭제하는 방법

find, sed, awk, cut 또는 기타 명령을 사용하여 파일 이름 목록만 가져오고 디렉터리와 하위 디렉터리를 삭제하는 방법.

예: 모든 미디어 파일 목록을 얻기 위해 find를 사용합니다.

find /var/warehouse/* -type f \( -name "*.avi" -o -name "*.mkv" -o -name "*.flv" -o -name "*.mp4" \) -exec ls {} +

산출:

/var/warehouse/movies/Blade/The.Bucket.List[2007]DvDrip-aXXo.avi
/var/warehouse/movies/Blade/The Lion King (1994).mkv
/var/warehouse/movies/Blade/The.Pursuit.of.Happyness.2006.DVD5.720p.BluRay.x264-REVEiLLE.en.mkv
/var/warehouse/movies/Blade/The Secret [Dual Audio] Upscaled 720p Ripped by FÅM€.mkv
/var/warehouse/movies/Blade/Yes.Man.2008.DvDRip-FxM.avi
/var/warehouse/movies/Bollywood/Bhaag Milkha Bhaag - DVDScr - XviD - 1CDRip - [DDR].avi

내가 원하는 출력은 다음과 같습니다.

The.Bucket.List[2007]DvDrip-aXXo.avi
The Lion King (1994).mkv
The.Pursuit.of.Happyness.2006.DVD5.720p.BluRay.x264-REVEiLLE.en.mkv
The Secret [Dual Audio] Upscaled 720p Ripped by FÅM€.mkv
Yes.Man.2008.DvDRip-FxM.avi
Bhaag Milkha Bhaag - DVDScr - XviD - 1CDRip - [DDR].avi

답변1

당신은 이미 그것들을 대부분 가지고 있습니다. 당신은 당신의 것을 다음으로 -exec변경 하면됩니다.-printf

find /var/warehouse/* -type f \( -name "*.avi" -o -name "*.mkv" -o -name "*.flv" -o -name "*.mp4" \) -printf "%f\n"

%f경로를 무시하고 찾은 파일의 이름을 인쇄합니다.

및 와 같은 파일 도 일치하도록 을 (대소문자 구분 일치) -name로 변경하는 것을 고려할 수도 있습니다 .-iname*.Avi*.AVI

답변2

POSIX적으로:

find /var/warehouse/* -type f \( -name "*.avi" -o -name "*.mkv" \
    -o -name "*.flv" \
    -o -name "*.mp4" \) \
    -exec basename {} \;

또는 다음 find을 결합 할 수 있습니다 sed.

find /var/warehouse/* -type f \( -name "*.avi" -o -name "*.mkv" \
    -o -name "*.flv" \
    -o -name "*.mp4" \) | sed -e 's!.*/!!'

관련 정보