2017-10-19 3 views
1

이 명령이 작동하지 않는 이유가 있습니까? btw, 현재 디렉토리에있는 모든 csv 파일의 확장자를 제거하려고합니다.파일 이름에서 exec 및 strip 확장자를 찾으십시오.

find -type f -iname "*.csv" -exec mv {} $(basename {} ".csv") \; 

매개 변수 확장, xargs를 포함한 많은 변형을 시도했습니다 ... 그럼에도 불구하고 모두 쓸데 없었습니다.

+0

제공된 답 중 어떤 것이 효과가 있습니까? 그럴 경우 기꺼이 받아 들일 수 있고 투표가 끝날 수 있도록 표시하십시오. – Inian

+0

이 대답은 당신에게 효과가 있습니까? 내 대답에 대한 피드백을 남겨 두십시오. – Inian

답변

0

먼저 하위 디렉토리가 없도록주의하십시오. find은 추가 인수없이 자동으로 아래의 디렉토리로 다시 나타납니다.

간단한 방법 : 당신이 파일의 작은 충분한 번호가있는 경우, 다만 글로브 (*) 연산자를 사용하고 rename을 활용 : find를 사용하여, 당신은 너무 많은 파일이있는 경우

$ rename 's/.csv$//' *.csv 

및 아마도 xargs :

$ find . -maxdepth 1 -type f -name "*.csv" | xargs rename 's/.csv$//' 

당신이 정말 안전, t, 그래서 널 바이트로 구분하는 findxargs을 말할 수 있도록하려면 모자에 이상한 파일 이름이 없습니다 (예 : 공백 또는 줄 바꿈).

$ find . -maxdepth 1 -type f -name "*.csv" -print0 | xargs -0 rename 's/.csv$//'