从文件创建文件夹到另一个文件夹(bash)

时间:2019-03-08 13:34:30

标签: 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内 因此,对于这个示例,我应该在大文件夹“ 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尚不存在。

感谢您的帮助。

3 个答案:

答案 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"