パスリストからディレクトリリストを作成し、各ディレクトリに空のテキストファイルを作成します。

パスリストからディレクトリリストを作成し、各ディレクトリに空のテキストファイルを作成します。

入力はパスのリストです。最初のディレクトリを除くすべてのエントリは無視/削除する必要があります。

たとえば、dirnamesまたはdirsというテキストファイルには、次の3行のテキストが入力されます。

/how-to-blah-blah/
/how-to-blah-blah-blah/
/how-to-blah-blah-blah/

スクリプトを実行すると、次のディレクトリとファイルが生成されます。

/how-to-blah-blah/file.txt
/how-to-blah-blah-blah/file.txt
/how-to-blah-blah-blah/file.txt

または

入力する

"/d1","d2/subd1/subd2","d3/subder1/","d3/subder1/file.jpg"

出力:

d1、d2、d3、d4という4つのディレクトリを作成し、各ディレクトリの下にfile.txtというファイルを作成する必要があります。

3回の試み。それらのどれも完全に動作しません。

最初の試み

for i in ${a[@]}
do
    folder=`dirname $i`
while [ "${folder:0:1}" = "/" ]
do
    folder=${folder:1}
done
echo -p $folder
done

for i in *
do
    if [ -d $i ]
    then
        touch ./$i/index.html
    fi
done

2回目の試み

import os
from file (replace with actual file name)
with open('directory_list.txt', 'r') as f:
dir_list = f.read().split(',')

for dir_name in dir_list:

dir_name = dir_name.strip().strip('/')

if '/' not in dir_name:
    os.makedirs(dir_name, exist_ok=True)
    open(os.path.join(dir_name, 'blank_file.txt'), 'w').close()

3回目の試み

import os

def create_directories_and_files(directory_list):
    for directory in directory_list:
        if not os.path.exists(directory):
            os.makedirs(directory)
    
        file = os.path.join(directory, "blank_file.txt")
        open(file, 'w').close()


directories = ["dir1", "dir2", "dir3"]
create_directories_and_files(directories)

ベストアンサー1

Bashでこれを行うことはできますが、それがどれほど安定しているかはわかりません。試してみることができるものの1つ

#!/usr/bin/env bash

while IFS=',' read -ra dirs
  do for dir in "${dirs[@]}"
     do tmp="${dir//\"/}" # Get rid of double quotes
        tmp="${tmp#/*}" # Remove forward slash if it is somewhere in front of the string
        tmp="${tmp%%/*}" # Remove everything after the first `/` including
        mkdir -p "$tmp" && touch "$tmp/emptyfile"
     done
  done < dirs.csv

ここでは、文字列操作を使用してcsvで文字列を切り取り、圧縮します。

これが役立つことを確認してください

おすすめ記事