문제

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 {} \;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top