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

Linux 用于文件名路径列表的mkdir命令,linux,bash,shell,ubuntu,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/De

我有像这样的内容的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命令

我怎样才能轻松地做到这一点

谢谢

那么

for p in $(xargs < somefile.txt);
do
    mkdir -p $(dirname ${p})
done
p的
单位为$(xargs
这可以在本机
bash
语法中完成,无需调用任何外部二进制文件:

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

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

xargs-n 1 dirname如果您有文件名为“file1”的文件,您可以尝试以下一行:

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

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

确保使用perl one liner创建带空格的偶数路径名,并且:


有一些更好的方法来处理这个问题,
bash
有非常成熟的文件处理功能,但是这很好而且很短。
xargs
当然是不必要的<代码>读取p时。。。或者您可以
sed的%[^/]*$%%'somefile.txt | xargs mkdir-p
xargs -n 1 dirname <somefile.txt | xargs mkdir -p
cat file1 |xargs -I {} dirname "{}"| sort -u | xargs -I{} mkdir -p "{}"
xargs -I{} mkdir -p "{}"
perl -MFile::Path=make_path -lne 'make_path $_' dirlist.txt