提取文件夹名称并创建目录

时间:2014-08-19 17:58:55

标签: bash

我必须使用for循环提取文件夹名称(folder10 folder44等)并使用每个文件夹名称生成目录但我得到文件名(file1 file12)并且在创建目录时出现错误,即“无法创建目录”。我必须在我的管道中操作.txt文件,所以我不能跳过/ home / data / folder * / file * in for循环

如何获取文件夹名称而不是文件名

 #!/bin/bash
 $out_dir=/home/data/results
 for file in /home/data/folder*/file*
 do
     txtFile=${file##*/}
     id=${txtFile%.txt}

     echo "mkdir -p $out_dir/"${id}""

 done

文件夹和文件结构

 /home/data/folder10/file1/file1.txt
 /home/data/folder44/file12/file12.txt
 /home/data/folder100/file3/file3.txt
 /home/data/folder250/file4/file4.txt
 /home/data/folder1245/file5/file5.txt

我得到的输出     mkdir -p / home / data / results / file1     mkdir -p / home / data / results / file12     mkdir -p / home / data / results / file3

预期输出

mkdir -p /home/data/results/folder10
mkdir -p /home/data/results/folder44
mkdir -p /home/data/results/folder100

1 个答案:

答案 0 :(得分:1)

这个:

#!/bin/bash
out_dir=/home/data/results
for file in /home/data/folder*/file*.txt; do
    folder=${file%/*}
    mkdir -p "$out_dir/${folder##*/}"
done

或者这个:

#!/bin/bash
out_dir=/home/data/results
for file in /home/data/folder*/file*/file*.txt; do
    folder=${file%/*/*}
    mkdir -p "$out_dir/${folder##*/}"
done
相关问题