큰 고전이라는 건 알지만 내가 관심을 갖는 정확한 사례를 찾지 못했습니다.
다음과 같이 호출할 수 있는 + 명령이 필요합니다 mkdir
.mv
mvdir /home/user/Documents/irs.pdf /mnt/work/45/223/insight/irs1970.pdf
일반 명령과 mv
똑같이 작동하며 대신 경로를 생성합니다.no such file or directory
work/45/223/insight/
존재하지 않으며 생성해야 한다고 생각하세요 .
내가 찾은 다른 모든 명령은 이와 같이 호출할 수 없으며, 더 많은 정보가 필요하고, 경로와 파일을 직접 구별해야 합니다.
시도:mkdir -p /mnt/work/45/223/insight && mv /home/user/Documents/irs.pdf /mnt/work/45/223/insight/irs1970.pdf
답변1
이 문제에 대한 귀하의 시도는 공정합니다. 처리 방법을 고려하는 방법은 다음과 같습니다.
#!/bin/sh
src=$1
dst=$2
if [ ! -d "$dst" ]
then
dir=${dst%/*} # dir path
[ "$dir" = "$dst" ] && dir=. # but had no dir
mkdir -p "$dir" # create path
fi
mv "$src" "$dst" # move file
이를 mvdir
사용자 위치 중 하나 에 저장 $PATH
하고 실행 가능하게 만듭니다.
이 스크립트는 여러 소스를 처리하도록 확장될 수 있지만 여기서는 그렇게 하지 않았습니다.
답변2
정답은 아니지만 여전히 해당 작업을 수행하는 항목을 찾을 수 없습니다.
그래서 해결 방법을 만드는 데 두 번이나 걸렸지만 누가 사용하도록 허용했는지 mv
경로를 완전히 다시 만든 다음 파일을 옮겼습니다.
find /mnt -type d -print0 | while read -d $'\0' i; do mkdir -p /home/user/Documents$i; done
mv /home/user/Documents/irs.pdf /mnt/work/45/223/insight/irs1970.pdf
이상적이지는 않지만 괜찮습니다.