여러 파일을 다운로드하고 제거하려는 파일 이름에 인증 매개변수처럼 보이는 것을 추가했습니다. 예:
file1.doc?b1h2uj3b123uiyb12
file2.xls?oi12jo3ij123oij
file3.jpg?0990xcizx0cxzczixuchbiasdu
전체 파일 폴더에서 물음표 뒤의 모든 항목을 삭제하는 쉬운 방법이 있습니까?
답변1
모든 파일 이름을 물음표와 일치시키고 를 사용하여 *\?*
변수에서 다음 부분을 제거할 수 있습니다. 물음표 자체는 와일드카드 문자이므로 두 경우 모두 이스케이프해야 합니다.?
${var%%\?*}
파일에 대한 간단한 루프를 실행하고 실행하면 mv
트릭을 수행할 수 있습니다.
for f in ./*\?*; do
echo mv -n "$f" "${f%%\?*}"
done
( echo
변경하기 전에 수행할 작업을 확인할 수 있도록 존재합니다. 출력이 합리적으로 보이면 제거하십시오.)
답변2
Perl 유틸리티 사용 rename
:
$ rename -v -n 's/[?].*//' *[?]*
rename(file1.doc?b1h2uj3b123uiyb12, file1.doc)
rename(file2.xls?oi12jo3ij123oij, file2.xls)
rename(file3.jpg?0990xcizx0cxzczixuchbiasdu, file3.jpg)
s/[?].*//
그러면 각 이름에 Perl 대체가 적용됩니다 . 첫 번째 물음표 앞의 이름이 잘립니다. 파일 이름 *[?]*
와일드카드 패턴은 물음표가 포함된 현재 디렉터리의 모든 이름으로 확장됩니다.
-n
실제로 파일 이름을 바꾸지 않고 명령을 실행합니다 .