![보고서-07/05/13과 같은 파일을 터치하는 방법](https://linux55.com/image/33674/%EB%B3%B4%EA%B3%A0%EC%84%9C-07%2F05%2F13%EA%B3%BC%20%EA%B0%99%EC%9D%80%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%ED%84%B0%EC%B9%98%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
report-05/07/13
명령을 사용하는 것처럼 파일을 터치 하려고 하면 touch report-$(date +%D)
다음과 같은 오류가 발생합니다.
touch: cannot touch
보고서-07/05/13': 해당 파일이나 디렉터리가 없습니다`
어떻게 만들 수 있나요?
그런데 "폴더"는 없고 파일 이름만 있습니다.
답변1
/ 기호는 경로 구분 기호로 사용됩니다.
이 명령을 실행하면 결과는 다음과 같습니다.
Report-07/05/13 하지만 쉘은 이를 다음과 같이 해석합니다.
report-07 - Parent Directory
05 - subdirectory
03 - filename
정말로 report-07/05 디렉토리를 원한다면 먼저 다음을 사용하여 디렉토리를 생성해야 합니다:
mkdir -p report-`date +%m\/%d`
touch report-`date +%D`
원하는 것이 date-MDY라는 파일뿐이라면 구분 기호를 변경하는 것이 더 쉬울 것입니다.
touch report-`date +%m.%d.%y`
답변2
touch
디렉터리는 생성할 수 없고 파일만 생성할 수 있습니다. 예를 들어 를 호출하여 먼저 디렉터리를 만들어야 합니다 mkdir -p $(dirname report-$(date +%D))
.
-p
나타냅니다부모그리고 주어진 경로에 누락된 디렉터리를 모두 만듭니다. 경로의 마지막 구성 요소를 제거 하고 dirname
디렉터리만 mkdir
.
답변3
슬래시는 Unix의 경로 구분 기호이므로 파일 이름의 일부로 사용할 수 없습니다. 사양이 실제로 전체 경로인 경우 다음을 수행할 수 있습니다.
file=report-$(date +%D)
mkdir -p "${file%/*}"
touch "$file"