【发布时间】:2019-12-17 08:38:02
【问题描述】:
给定一个带有路径的文本文件(每一行都有一个新路径)。
需要从路径创建目录。这很容易像mkdir -p is/isapp/ip/ipapp 一样完成。然后chgrp group1 is/isapp/ip/ipapp。但问题是访问仅更改最终的ipapp 目录。并且您需要更改所有新创建目录的访问权限,而不更改在 mkdir -p 命令之前已经存在的目录的访问权限。因此,您需要检查哪些目录已经存在并仅更改新创建的目录的权限。下面我尝试从文件中拆分路径并逐渐增加它,直到搜索没有找到目录的那一刻。然后chgrp -R 带有未找到目录的路径。下面是我的代码草图。如果有任何帮助,我将不胜感激。
#!/bin/bash
FILE=$1 /(file with paths(in each line new path))
while read LINE; do
IFS='/' read -ra my_array <<< "$my_string"
if ! [ -d "${my_array[0]}" ]; then
mkdir -p "${my_array[0]}"
else -d "${my_array[0]}"/"${my_array[@]}"
done
fi
【问题讨论】:
-
嗯,就是这样,但你在哪里使用
FILE?else -d是怎么回事?最好通过shellcheck.net 运行此程序并修复它突出显示的所有错误,然后更新您的 Q。如果您包含一些应处理的示例数据,它将避免播放“20 个问题”。您想要包含错误检查吗?包含错误然后数据。man mkdir并阅读有关-m选项的信息。它可能会有所帮助。最后,您似乎需要第二个内部循环来处理/path/to/dir的每个段(如果我正确理解您的 Q ). 祝你好运! -
$my_string来自哪里?最好阅读while read rec ; do .... cmds ; done < inputFile。请更新您的 Q 并尽可能避免在 cmets 中回复。祝你好运。 -
请用组发布示例输入文件和示例输出目录/文件布局。您可以使用
basename和dirname“从文件中拆分路径”。
标签: arrays bash shell unix increment