Skip to content

Instantly share code, notes, and snippets.

@rg3915
Last active February 18, 2024 19:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rg3915/d9997d534a5c527ff3cad2d3439df808 to your computer and use it in GitHub Desktop.
Save rg3915/d9997d534a5c527ff3cad2d3439df808 to your computer and use it in GitHub Desktop.
Create folders files with Python in command line

Create folders, subfolders and file in command line with Python and Shell Script.

Install

sudo cp create_folders_files.py /usr/bin/
sudo cp mkf.sh /usr/bin/mkf
sudo chmod +x /usr/bin/mkf

Usage

With Shell Script

mkf "folder/subfolder/{file1,file2,file3}.txt"

With Python

python create_folders_files.py -p "folder/subfolder1/subfolder2/file.txt"
python create_folders_files.py -p "folder1/subfolder1/subfolder2/{file1.html,file2.css,file3.js}"
python create_folders_files.py -p "folder2/subfolder1/subfolder2/{file1,file2,file3}.txt"

Result

├── folder
│   └── subfolder1
│       └── subfolder2
│           └── file.txt
├── folder1
│   └── subfolder1
│       └── subfolder2
│           ├── file1.html
│           ├── file2.css
│           └── file3.js
├── folder2
│   └── subfolder1
│       └── subfolder2
│           ├── file1.txt
│           ├── file2.txt
│           └── file3.txt
'''
sudo cp create_folders_files.py /usr/bin/
python create_folders_files.py -p "folder/subfolder1/subfolder2/file.txt"
python create_folders_files.py -p "folder1/subfolder1/subfolder2/{file1.html,file2.css,file3.js}"
python create_folders_files.py -p "folder2/subfolder1/subfolder2/{file1,file2,file3}.txt"
'''
import argparse
import subprocess
def parse_path(path):
folders = path.split('/')[:-1]
files = path.split('/')[-1]
new_folders = '/'.join(folders)
subprocess.run(f'mkdir -p {new_folders}', shell=True)
if '}.' in files:
files, extension = files.split('.')[0], files.split('.')[-1]
files = files[1:-1].split(',')
for file in files:
subprocess.run(f'touch {new_folders}/{file}.{extension}', shell=True)
elif ',' in files:
files = files[1:-1].split(',')
for file in files:
subprocess.run(f'touch {new_folders}/{file}', shell=True)
else:
subprocess.run(f'touch {new_folders}/{files}', shell=True)
subprocess.run(f'tree', shell=True)
def main():
parser = argparse.ArgumentParser(description='Create folders and files based on the provided path.')
parser.add_argument('--path', '-p', help='Type path folder/file.txt.')
args = parser.parse_args()
if args.path:
parse_path(args.path)
else:
print("Please provide a valid path using the --path option.")
if __name__ == '__main__':
main()
#!/bin/bash
# sudo cp mkf.sh /usr/bin/mkf
# sudo chmod +x /usr/bin/mkf
# Check if a parameter is provided
if [ $# -eq 0 ]; then
echo "Usage: $0 <param>"
exit 1
fi
param="$1"
python /usr/bin/create_folders_files.py -p "$param"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment