파일의 특정 복사본

파일의 특정 복사본

동일한 접미사(0에서 310까지)를 가진 파일과 디렉터리가 있습니다. file(0)에 복사 directory(0)하고 file(10)까지 directory(10)계속 file(310)하고 싶습니다 directory(310).

한꺼번에 복사할 수 있는 방법은 없나요?

답변1

파일을 반복하여 해당 디렉토리로 이동합니다.

for FILE in *; do 
if [[ -f "$FILE" ]]; then 
    echo mv "$FILE" "dir${FILE##file}";
fi
done
  • if [[ -f "$FILE" ]]; then, 디렉토리가 아닌 $FILE파일인지 확인하십시오 .-f-d
  • ${FILE##file}, (마지막 접두사까지 잘라내기)는 file파일 이름에서 접두사를 제거하고 숫자 부분만 유지합니다.
  • echo실제로 움직이기 전에 연습을 해야 합니다 .

예제 출력:

file0 --> dir0
file1 --> dir1
file2 --> dir2
file3 --> dir3

고쳐 쓰다: 파일 이름에 유사한 접미사가 있는 경우 file##.xyz다음 스크립트를 사용할 수 있습니다.

for FILE in *; do
    if [[ -f "$FILE" ]]; then
    dname="${FILE##file}";
    echo mv "$FILE" "dir${dname%.inp}";
fi
done

${dname%.inp}코드의 이 부분(첫 번째 접미사로 잘라내기)은 이전에 접두사를 제거한 .inp파일 이름 끝 부분을 제거 하므로 숫자 부분만 생성됩니다.${FILE##file}file

또는 아래와 같이 사용할 수도 있습니다.

for FILE in *; do
    if [[ -f "$FILE" ]]; then
    echo mv "$FILE" "dir${FILE//[^0-9]/}";
fi
done

관련 정보