트리의 디렉터리를 /dir1/dir2/dir3/dir4에서 /dir1/dir2/dir4/dir3으로 바꿉니다.

트리의 디렉터리를 /dir1/dir2/dir3/dir4에서 /dir1/dir2/dir4/dir3으로 바꿉니다.

다음과 같은 디렉토리 목록이 있습니다.

  • stats/gauges/stock/market/PLN/EUR/*
  • stats/gauges/stock/market/USD/EUR/*
  • stats/gauges/stock/market/PLN/CZK/*

이와 같은 것이 수백 개가 더 있습니다. 통화 순서를 변경해야 하므로 다음과 같습니다.

  • stats/gauges/stock/market/EUR/PLN/*
  • stats/gauges/stock/market/EUR/USD/*
  • stats/gauges/stock/market/CZK/PLN/*

이 디렉터리 안에는 더 많은 중첩된 디렉터리와 일부 파일이 있습니다.

Carbon + Whisper + Graphite제가 실제로 달성하고 싶은 것은 설치 프로그램에서 사용하는 데이터 저장 형식 인 통계의 "명명"을 수정하는 것입니다 .

가장 간단하고 안정적인 방법은 무엇입니까?

답변1

위의 예에서 항상 6개의 디렉터리가 있는지 확인할 수 있다면 다음을 수행하여 마지막 두 디렉터리를 바꿀 수 있습니다.

find stats -mindepth 5 -maxdepth 5 -type d \    # (Or some other way of generating your list of directories)
| while read dir
do
     mv -v "$dir" "$(echo $dir | awk -F '/' '{ print $1"/"$2"/"$3"/"$4"/"$6"/"$5 }')"
done

echo먼저 확인하기 위해 하나를 앞에 던져보세요 mv.

디렉토리 수를 셀 수 없다면 "마지막 두 개를 바꾸는" 보다 일반적인 방법이 있을 것이라고 확신하지만 하나도 모릅니다.

관련 정보