Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用;触摸“;创建目录?_Linux_Bash - Fatal编程技术网

Linux 使用;触摸“;创建目录?

Linux 使用;触摸“;创建目录?,linux,bash,Linux,Bash,1) 在“A”目录中: find . -type f > a.txt cat a.txt | while read FILENAMES; do touch "$FILENAMES"; done 2) 在“B”目录中: find . -type f > a.txt cat a.txt | while read FILENAMES; do touch "$FILENAMES"; done 3) 结果:2)“创建文件”[我的意思是仅使用相同的文件名,但大小为0字节]确定。但是如果“

1) 在“A”目录中:

find . -type f > a.txt
cat a.txt | while read FILENAMES; do touch "$FILENAMES"; done
2) 在“B”目录中:

find . -type f > a.txt
cat a.txt | while read FILENAMES; do touch "$FILENAMES"; done
3) 结果:2)“创建文件”[我的意思是仅使用相同的文件名,但大小为0字节]确定。但是如果“A”目录中有子目录,则2)无法在子目录中创建文件,因为子目录中没有目录。


问题:
touch
可以创建目录吗?

因为
find
每行输出一个文件:

cat a.txt | while read file; do
    if [[ "$file" = */* ]]; then
        mkdir -p "${file%/*}";
    fi;

    touch "$file";
done
编辑:

如果在单独的步骤中创建目录,则效率会稍微提高:

cat a.txt | grep / | sed 's|/[^/]*$||' | sort -u | xargs -d $'\n' mkdir -p

cat a.txt | while read file; do
    touch "$file";
done

而且,不,
touch
不能自己创建目录。

不。为什么不直接使用mkdir而不是touch来创建目录?

交叉帖子:@Peter:10个问题,8个答案。StackOverflow和SuperUser上的0个接受答案和0个向上投票。现在是交叉柱。唉……又一个。请不要这样做。超级用户是问这个问题的正确地方。如果一个问题符合多个站点的标准,则允许交叉发布,但在这种情况下,它更适合SU。创建所需的目录,然后创建文件将非常有用。将比运行两个命令更容易实现相同的目的。它是linux,我希望它是智能的;)