저는 Structurer라는 Mac용 앱을 본 적이 있습니다.http://www.youtube.com/watch?v=kXRjneFTs6Q) 다음과 같은 파일 및 폴더 구조가 제공됩니다.
/folder1
/folder2
/file1
/folder2.1
/file2.1
기존 위치에 이 파일과 폴더가 생성됩니다.
Ubuntu에도 이와 같은 것이 있습니다. 아니면 이와 같은 것을 얻기 위해 쉘 스크립트를 어떻게 작성할 수 있습니까?
가능하다면 템플릿을 사용하여 파일을 만들 수 있는 것도 멋질 것입니다.
답변1
까다로운 부분은 파일과 폴더가 동일한 방식으로 표시되며 이를 구분할 수 있는 간단한 방법이 없다는 것입니다. 파일 2.1의 경우 해당 파일( /folder2/folder2.1/file2.1
)이 실제로 폴더인지 아니면 폴더 2.1 내의 파일인지 알 수 있는 방법이 없습니다 .
예, 설명에 해당 단어가 나와 있으므로 *file*
파일을 의미한다는 것을 알 수 있지만 프로그램에서는 어떻게 알 수 있습니까? 하나는 다른 항목과 동일한 들여쓰기 수준으로 이어지기 때문에 프로그램은 경로에서 파일을 알려줄 수 있습니다. 하지만 이는 복잡하고 혼란스러운 규칙으로 이어집니다.
키워드를 사용하거나 정규화된 이름만 사용하는 것이 좋습니다. 가장 쉬운 방법은 다음과 같습니다.
/폴더1/
/폴더2/
/폴더2/파일1
/폴더2/폴더2.1/
/폴더2/폴더2.1/파일2.1
후행 슬래시는 "이것은 파일이 아니라 폴더입니다."를 의미합니다. 그런 다음 이와 같은 쉬운 스크립트를 사용하여 디렉터리 구조를 만들 수 있습니다. 이 스크립트에 대한 몇 가지 경고입니다.
- 더 높은 수준의 디렉터리를 먼저 만들어야 합니다.
- 앞에 "."를 붙입니다. 생성된 모든 디렉터리가 스크립트가 실행되는 디렉터리를 기준으로 하도록 경로에 추가합니다.
- dir/path 파일의 내용을 확인하는 동안 오류가 발생하지 않습니다.
#!/bin/sh -v # # builds a directory and file structure. # directories must exists before referenced or file in the directory declared. # # sample input looks like (without the leading #): # /folder1/ # /folder2/ # /folder2/file1 # /folder2/folder2.1/ # /folder2/folder2.1/file2.1 # # make sure we have our one and only input parameter. if [ $# != 1 ]; then echo "Usage: `basename $0` input_file_name" echo "input_file_name contains absolute dir paths with a trailing slash," echo "or absolute file path/name with no trailing slash." exit 1 fi # get the file name from the command line FILE=$1 # make sure the input parameter specifies a file. if [ ! -e ${FILE} ]; then echo "Sorry, the file ${FILE} does not exist." exit 1 fi for LINE in $(cat $FILE) do LAST=$(echo ${LINE} | awk -F/ '{print $(NF)}') # if file ends with a slash, this value is blank, if it is no slash, this is the file name. if [ "${LAST}XXX" = "XXX" ]; then # is empty, so it is directory, future feature to check exist already mkdir ".${LINE}" else # is not empty, so it is a file touch ".${LINE}" fi done exit 0
그러면 입력 파일에 표시된 대로 디렉터리와 파일이 생성됩니다. 스크립트가 호출되고 create.sh
해당 chmod 755 create.sh
명령이 ./create.sh data
데이터 파일에 설명된 대로 디렉터리와 파일을 생성합니다.