我需要一些帮助来处理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
内
因此,对于这个示例,我应该在大文件夹“ Project
”中获得4个新文件夹,它们的名称为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
尚不存在。
感谢您的帮助。
答案 0 :(得分: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
答案 1 :(得分:1)
检查此
html.is-mobile-device
答案 2 :(得分:1)
我不知道您是要尝试从存储在文本文件中的文件列表中构建目录结构还是将现有文件移动到新的目录结构中。
其他答案显示了如何建立目录结构和移动exisitng文件。
如果您需要从列表构建目录结构,创建新的空文件,则可以执行以下操作:
#!/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"