mkdir命令用于文件名路径列表

时间:2012-02-13 18:09:46

标签: linux bash shell ubuntu

我的txt文件包含这样的内容

/home/username/Desktop/folder/folder3333/IMAGw488.jpg
/home/username/Desktop/folder/folder3333/IMAG04f88.jpg
/home/username/Desktop/folder/folder3333/IMAGe0488.jpg
/home/username/Desktop/folder/folder3333/IMAG0r88.jpg
/home/username/Desktop/folder/folder3333/
/home/username/Desktop/folder/
/home/username/Desktop/folder/IMAG0488.jpg
/home/username/Desktop/folder/fff/fff/feqw/123.jpg
/home/username/Desktop/folder/fffa/asd.png
....

这些是文件名路径,但也是文件夹的路径。 我想解决的问题是创建不存在的所有文件夹。

我想为每个不存在的文件夹调用mkdir命令

我怎么能这么简单地做到这一点?

由于

6 个答案:

答案 0 :(得分:11)

这可以使用本机bash语法完成,而无需调用外部二进制文件:

while read line; do mkdir -p "${line%/*}"; done < infile

如果您有mkdir

,或者只需拨打一次bash 4.x即可
mapfile -t arr < infile; mkdir -p "${arr[@]%/*}"

答案 1 :(得分:2)

怎么样......

for p in $(xargs < somefile.txt);
do
    mkdir -p $(dirname ${p})
done

答案 2 :(得分:2)

xargs -n 1 dirname <somefile.txt | xargs mkdir -p

答案 3 :(得分:0)

也可以在没有循环的情况下完成(提供的输入文件不大):

mkdir -p $(perl -pe 's#/(?!.*/).*$##' file.txt)

答案 4 :(得分:0)

如果你有文件名“file1”,你可以试试这个oneliner:

cat file1 |xargs -I {} dirname "{}"| sort -u | xargs -I{} mkdir -p "{}"

使用:

xargs -I{} mkdir -p "{}"

确保创建具有空格的偶数路径名称

答案 5 :(得分:0)

使用perl单行和File::Path qw(make_path)

perl -MFile::Path=make_path -lne 'make_path $_' dirlist.txt