rda@MacBook-Pro X.WORK % ls
Assignment1.file Sec3 moremumbo.woot
FICTION.bak Test-1.bak mumble.txt
File-1.bat Test-1.txt mumbo.file
FundaOfIT.txt Text-1.xtxt myunix.txt
MyFave.txt Text-2.xtxt thistle.bak
Sec1 coursetext
Sec2 dooda.text
현재 디렉토리 "X.WORK"에서 문자 "t"로 끝나는 모든 파일을 하위 디렉토리 Sec3으로 이동해야 합니다. mv 명령을 사용하여 모두 함께 이동할 수 있습니까?
지저분해 보이셨다면 죄송합니다. 이것이 첫 번째 질문입니다. 어떤 이유에서인지 코드를 더 멋지고 깔끔하게 만들 수 없습니다.
답변1
다음은 기본 셸 와일드카드입니다.
mv ./*t Sec3/
껍데기(아니요 mv
- 이것은매우기억할 가치가 있는 중요한 차이점) 이를 다음과 같이 확장합니다.
mv ./moremumbo.woot ./mumble.txt ./Test-1.txt ./FundaOfIT.txt ./Text-1.xtxt ./myunix.txt ./MyFave.txt ./Text-2.xtxt ./coursetext ./dooda.text Sec3/
(정렬되어 있을 수도 있지만 그 순서가 아닙니다. 정렬 순서를 보려면 echo
또는 ls -ld
대신을 사용해 보세요)mv
./
그런데 꼭 필요하지 않더라도 접두사를 사용하는 것이 좋습니다. 이는 불행하게도 이름이 지정된 파일이 실수로(또는 악의적으로) 옵션으로 해석되는 것을 방지하기 위한 것입니다 mv
. 예를 들어, -t
디렉터리에 파일 이름이 있으면 *t
(접두사 없이 ./
) 확장되어 인수 목록에 포함되고 mv
파일 이름이 아닌 옵션으로 해석됩니다. GNU의 경우 mv
( -t
약어--target-directory
앞으로그 이후가 아닌 다른 매개변수).
/
디렉터리 이름에 후행 문자를 사용하는 것도 좋은 습관입니다. 파일을 디렉터리로 이동하거나 복사(또는 rsync 등)하려고 할 때 실수로 파일을 덮어쓰거나 생성하는 것을 방지합니다.