명령을 잘라내는 모든 파일 이름에서 255 문자
문제
NTFS 디렉토리에서 열린 bash 쉘입니다.어떤 명령을 재귀적으로 잘라내는 모든 파일 이름에서 디렉토리를 255 문자로 제한에 필요한 ext3?
해결책
액세스 권한이 있는 경우는 윈도우 셸을 사용할 수 있습니다:
@echo off
setlocal EnableDelayedExpansion
REM loop over all files in the cwd
for /f %%a in ('dir /a-d /b') do (
REM store this filename in a variable so we can do substringing
set ThisFileName=%%a
REM now take a substring
set ThisShortFileName=!ThisFileName:~0,255!
REM finally, the rename:
echo ren %%a !ThisShortFileName!
)
:EOF
endlocal
(주의:추가 울기 전에 이름을 변경 명령을 수 있습니다 그래서 그냥 시각적으로 작동하는지 확인하기 전에 실제로 실행습니다.에서 작동 상자입니다.)
나는 누군가에서 기존 유닉스용자 지금 바로 만들 수 있는 비슷한 스크립트에 대한 bash 지만,나에 갇혀 Windows 계)
행운을 빕니다!
다른 팁
쉘이 PWD로 NTFS 디렉토리에 앉아 있다고 가정합니다.
for f in *; do mv $f ${f:0:255}; done
Dave의 SED 기반 버전과 유사하지만 파일 당 실행을 피합니다. Max Commandline 한계로 인해 정말로 거대한 Dir에서 폭발 할 것이며 서브 디르를 수행하지 않습니다.
$ cat truncname
#!/bin/bash
# requires basename, dirname, and sed
mv $1 `dirname $1`/`basename $1 | sed 's/^\(.\{0,255\}\).*/\1/'`
$ chmod a+x truncname
$ find . -exec ./truncname {} \;
제휴하지 않습니다 StackOverflow