주어진 구조에서 파일과 폴더를 생성하는 앱

주어진 구조에서 파일과 폴더를 생성하는 앱

저는 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

후행 슬래시는 "이것은 파일이 아니라 폴더입니다."를 의미합니다. 그런 다음 이와 같은 쉬운 스크립트를 사용하여 디렉터리 구조를 만들 수 있습니다. 이 스크립트에 대한 몇 가지 경고입니다.

  1. 더 높은 수준의 디렉터리를 먼저 만들어야 합니다.
  2. 앞에 "."를 붙입니다. 생성된 모든 디렉터리가 스크립트가 실행되는 디렉터리를 기준으로 하도록 경로에 추가합니다.
  3. 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데이터 파일에 설명된 대로 디렉터리와 파일을 생성합니다.

관련 정보