find사용법 질문

lkjt의 이미지

.D.avi로 끝나는 파일만 D.avi를 지우고 폴더를 만들게 하려면 어떻게 하죠

예를 들면

A.avi
A.D.avi
B.D.avi

가 있으면

폴더 A, B를 만들게 해주는 것입니다

find . -name '*.D.avi' -exec mkdir `basename '{}' .D.avi`

로 하니까 제대로 안되네요

어떻게 해야하나요?

jellypo의 이미지

정규표현식과 관련된 내용입니다.

for i in `find ./ -name ?.D.avi`;do mkdir ${i%.D.avi}; done

변수명 뒤에
%
%%
#
##
와 조작할 값(?)을 넣어주면 되는데.. 이게 정확한 명칭이 뭐였더라...?;

서브 디렉토리에 있는 파일들을 현재 find 실행하는 위치에서 디렉토리 생성하려 하시는건가요? 음... 뭔가 스마트한 방법이 있을거 같은데 일단 제가 생각해낸건 저 내용입니다.

ihavnoth의 이미지

$ mkdir -p $( find ./ -name "*.D.avi" -type f -maxdepth 1 -exec basename {} .D.avi \; 2> /dev/null )

없음

pcharley의 이미지

find -name "*.avi" | perl -ne 'print if s/^\.\/(.)\.D\.avi/mkdir $1/g' | sh