일부 파일을 새 위치로 이동하고 날짜 시간을 추가합니다.

일부 파일을 새 위치로 이동하고 날짜 시간을 추가합니다.

두 개의 디렉토리가 있습니다.

/routea/path/to/dir1
/routeb/path/to/dir2

몇 가지 파일이 있습니다 dir1.

file.name
file.name.1
file.name.2
file.name.3

(4개 이상의 파일이 있을 수 있습니다.) 1-3으로 끝나는 파일을 다음으로 이동해야 합니다.dir2

나는 시도했습니다(이것이 분명한 단계라고 생각합니다).

mv /routea/path/to/dir1/file.name.* /routeb/path/to/dir2/

하지만 그건 나에게만 말해주는 거야

mv: cannot stat `/routea/path/to/dir1/file.name.*': No such file or directory

상황을 복잡하게 만들기 위해 이상적으로는 각 파일을 이동할 때 각 파일의 끝에 타임스탬프를 추가하고 싶습니다. 그러면 다음과 같은 결과가 나옵니다.file.name.1.yyyymmddhhmmss

누구든지 올바른 방향으로 나를 가리킬 수 있습니까? 이 작업을 수행하려면 어떤 형태의 루프를 사용해야 한다고 생각하지만 방법을 모르겠습니다.

답변1

예를 들어 아래와 같이 for 루프를 사용하여 이 작업을 수행할 수 있습니다.

for f in /routea/path/to/dir1/file.name.? ; do fn=`echo $f | cut -d'/' -f6`;  mv $f /routeb/path/to/dir2/$fn.`date +%Y%m%d%H%M` ; done

잘라내기 명령은 하위 디렉터리 수에 따라 사용자 정의되어야 합니다. 날짜도 추가됩니다. bash를 사용하여 RedHat에서 테스트되었습니다.
디렉터리에서 명령을 시작하는 경우에는 /route/path/to/dir1/필요하지 않습니다.

fn=`echo $f | cut -d'/' -f6`; 

부분.

답변2

find dir1/ -name "file.name.[1-3]" -exec bash -c 'mv {} dir2/$(basename "{}").$(date +%Y%m%d%H%M%S)' \;

답변3

그리고 zsh:

autoload zmv # best in ~/.zshrc
zmv "/routea/path/to/dir1/(file.name.<1-3>)" "/routeb/path/to/dir2/\$1.$(date +%Y%m%d%H%M%S)"

관련 정보