入力はパスのリストです。最初のディレクトリを除くすべてのエントリは無視/削除する必要があります。
たとえば、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で文字列を切り取り、圧縮します。
これが役立つことを確認してください