일부 하위 디렉터리가 이미 존재하지 않으면 많은 Unix 명령이 실패하지만, 이러한 명령의 경우 계속하기 전에 누락된 하위 디렉터리를 만드는 것이 쉽지 않습니다.
예를 들면 다음과 같습니다 touch
.
% touch /tmp/foo/bar/baz/frobozz
touch: cannot touch `/tmp/foo/bar/baz': No such file or directory
% mkdir -p /tmp/foo/bar/baz
% touch /tmp/foo/bar/baz/frobozz # succeeds
마찬가지로 mv
:
% mv --target-directory=/tmp/foo/frotz/quux /tmp/foo/bar/frobozz
% mv: failed to access `/tmp/foo/frotz/quux': No such file or directory
% mkdir -p /tmp/foo/frotz/quux
% mv --target-directory=/tmp/foo/frotz/quux /tmp/foo/bar/frobozz # succeeds
이 동작에 대한 한 가지 주목할만한 예외는 "필요에 따라 하위 디렉터리를 생성"하라는 플래그가 mkdir
있는 자체 입니다.-p
touch
mv
,, et al이라는 사실이 조금 혼란스럽습니다 . 기본적으로 또는 특정 플래그(예: mkdir
s -p
)를 사용하여 요청 시 "명백한 작업"을 수행하지 않습니다.
여기에는 타당한 이유가 있을 것이라고 생각하지만, 나에게는 분명하지 않습니다. 통찰력을 환영합니다.
mmv
(이 질문을 하게 된 동기 는 실제 유틸리티와는 달리 mmv
( 비표준) 유틸리티와 매우 유사한 유틸리티를 구현하고 싶다는 것입니다 .회의"필요에 따라 하위 디렉터리 만들기" 이 새로운 기능이 정말 나쁜 생각인지 궁금합니다.
예를 들어, 제가 고려하고 있는 유틸리티(제가 부르겠습니다 mmmv
)를 사용하면 동시에 파일을 이동하고 이름을 바꿀 수 있습니다.
1caf73ee55b4e11d6e3b12ccbf8c477c2839bfae
1f37fd8ce865f98579d10d8045ac1e88c6717215
73f2af84ba8ed27fa332d52745274377aa67cda5
a257a7c7cac26c391e8636193ff47b45c5e587ec
도착하다
1c/af73ee55b4e11d6e3b12ccbf8c477c2839bfae
1f/37fd8ce865f98579d10d8045ac1e88c6717215
a2/57a7c7cac26c391e8636193ff47b45c5e587ec
73/f2af84ba8ed27fa332d52745274377aa67cda5
다음과 같은 단일 명령을 사용하십시오.
% mmmv '??*' '#1#2/#3'
이렇게 하려면 mmmv
필요에 따라 두 글자로 명명된 하위 디렉터리를 만들 수 있어야 합니다. )
답변1
일반적으로 유틸리티가 이를 수행하지 않는 이유는 예상하지 못한 일이고 그렇게 하면 보안 위험이 발생할 수 있기 때문입니다.
/foo
예를 들어, 모드 700
( )를 사용하여 비공개로 간주되는 디렉터리가 있다고 가정합니다 rwx------
. 존재 touch /foo/bar
하지만 /foo
존재하지 않는 경우 기본값 755
( rwxr-xr-x
)을 사용하여 생성합니다. 하지만 /foo
비공개여야 하며 /foo
일반적으로 비공개로 생성되고 설정된 모든 항목은 그렇게 하지 않습니다. 방금 생성된 것을 모르기 때문에 /foo
조정해야 한다는 것을 알 수 없습니다.