Linux 在所有子目录中创建文件

Linux 在所有子目录中创建文件,linux,command-line,Linux,Command Line,我试图在所有子目录中创建一个名为1的文件。 e、 g主目录是abc,子目录是abc/xyz,abc/ghi/123 它必须包含完整的路径和文件名。您可以按照 for d in $(find abc -type d); do touch "$d"/1 done 使用: 它在名为abc 对于找到的每个目录,它将其读取到“dir”变量 readlink-f显示路径“$dir”/1的完整路径 “$dir”/1写入文件“$dir”/1,在写入前将其截断,如果不存在则创建 -print0和-d'用

我试图在所有子目录中创建一个名为
1
的文件。 e、 g主目录是
abc
,子目录是
abc/xyz
abc/ghi/123


它必须包含完整的路径和文件名。

您可以按照

for d in $(find abc -type d); do
    touch "$d"/1
done
使用:

  • 它在名为
    abc
  • 对于找到的每个目录,它将其读取到“dir”变量
  • readlink-f
    显示路径“$dir”/1的完整路径
  • “$dir”/1
    写入文件
    “$dir”/1
    ,在写入前将其截断,如果不存在则创建
  • -print0
    -d'
    用于处理目录名中的空格和换行符
  • 以及使用xargs的版本:

    find abc -type d -print0 | xargs -0 -n1 -- sh -c 'readlink -f "$1"/1 > "$1"/1` --
    
    但是我们也可以使用find的-exec,它可能是最快的:

    find abc -type d -exec sh -c 'readlink -f "$1"/1 > "$1"/1' -- {} \;
    

    文件应该是这样的:
    abc/xyz/1
    abc/ghi/1
    abc/ghi/123/1
    ?文件名应该是
    1
    。例如,如果它在
    abc/xyz/
    中,它必须包含这样的文本:
    abc/xyz/
    1
    实际上,我的意思是您需要文件名
    1
    无处不在,即在位置
    abc/ghi
    abc/ghi/123/
    中,或者仅在末端文件夹(叶节点)中。每个地方,是的,比如在
    abc/ghi
    abc/ghi/123
    中,可能是一个
    touch
    而不是
    mkdir
    我的坏习惯。我以为用户想创建一个目录而不是文件。我现在就修。感谢您指出。感谢您的回复,但是我如何才能在每个
    1
    文件中放置文本?echo“${d}/1”>“$d”/1。会成功的,为什么要投否决票。如果下议院的选民愿意捐款,那肯定是件好事。
    find abc -type d -exec sh -c 'readlink -f "$1"/1 > "$1"/1' -- {} \;