보고서-07/05/13과 같은 파일을 터치하는 방법

보고서-07/05/13과 같은 파일을 터치하는 방법

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"

관련 정보