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
readlink-f
显示路径“$dir”/1的完整路径“$dir”/1
写入文件“$dir”/1
,在写入前将其截断,如果不存在则创建-print0
和-d'
用于处理目录名中的空格和换行符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' -- {} \;