#bash
#bash
Вопрос:
Мне нужна помощь, чтобы разобраться с папками и файлами в Linux.
path1/path2/file_1:
file_A.txt
file_B.txt
file_C.txt
file_D.txt
и я хотел бы из этого file_1
создать по одной папке для каждого file_X.txt
и поместить в соответствующую file_X.txt
итак, для этого примера я должен получить 4 новые папки в большой папке « Project
«, которая получила название части file_X.txt
без .txt
:
/Project/file_A
file_A.txt
/Project/file_B
file_B.txt
/Project/file_C
file_C.txt
/Project/file_D
file_D.txt
* Обратите внимание, что папка Project
еще не существует.
Спасибо за вашу помощь.
Комментарии:
1. Чтобы уточнить, поскольку оба ответа, похоже, предполагают иное: являются
file_A.txt
,file_B.txt
и т.д. содержимоеfile_1
?2. Do
path1/path2/file_1
содержит текстовый файлfile_A.txt
…file_D.txt
в виде текста? правильно? Где находятся файлы, которые вы хотите переместить в папки позже? или вы просто хотите коснуться пустого файла с именем folder .txt?
Ответ №1:
Что-то вроде приведенного ниже должно делать то, что вам нужно :
for file in $(find /path/to/files/ -name "file_*.txt")
do
name=$(basename "$file" .txt)
mkdir -p /Project/$name
mv "$file" /Project/$name
done
Ответ №2:
Проверьте это
for i in *.txt
do
bname=$(basename -- $i)
filename=${bname%.*}
mkdir $filename
mv $i $filename
done
Ответ №3:
Я не мог сказать, пытаетесь ли вы создать структуру каталогов из списка файлов, который хранится в текстовом файле, или переместить существующие файлы в новую структуру каталогов.
Другие ответы показывают, как создать структуру каталогов и переместить существующие файлы.
Если вам нужно создать структуру каталогов из списка, создав новые пустые файлы, вы могли бы сделать это:
#!/bin/bash
manifest=/path1/path2/file_1 # Path to the file containing the list of files to create
parent=./Project # Path to the parent directory for the new sub-directories
while read -r filename; do
basename="${filename%.txt}"
mkdir -p "${parent}/${basename}"
touch "${parent}/${basename}/$filename"
done < "$manifest"
Комментарии:
1. Спасибо за вашу помощь