我的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命令
我怎么能这么简单地做到这一点?
由于
答案 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