用于在递归扫描目录的for循环中获取相对路径的脚本
Script to get the relative path in a for loop which recursively scans a directory
假设我们使用for
循环扫描一个目录(folder0):
for element in $(ls) ...
此目录可能包含文件和子文件夹,其中可能包含文件和子文件夹等。
假设当我们在 for
循环中得到一个 folder 元素时,我们对相对于 folder0 的路径感兴趣。例如,如果我们有绝对路径
irrelevant_part/folder0/remaining_part/folderN
相关部分将是
folder0/remaining_part/folderN.
我们怎样才能获得这个结果,以便将它分配给一个变量,以便在脚本的其余部分使用?
编辑
我要求不要将此问题视为与我所指出的问题重复,因为它不适合我的问题。
一个可能的解决方案是:
cd irrelevant_part/folder0
for element in $(ls -R)
do
if [[ $element == *"."* ]]; then
f0=folder0
abbr_path=$element
# Substituting . with folder0 in the abbreviated path
abbr_path="${abbr_path/./$f0}"
nul=""
# Substituting : with null in the abbreviated path
requested_path="${abbr_path/:/$nul}"
fi
done
假设唯一名称:
my_var="$(find . -type d -name folderN 2>/dev/null|awk -F\folder0\/ '/folder0\//{print FS}')"
假设我们使用for
循环扫描一个目录(folder0):
for element in $(ls) ...
此目录可能包含文件和子文件夹,其中可能包含文件和子文件夹等。
假设当我们在 for
循环中得到一个 folder 元素时,我们对相对于 folder0 的路径感兴趣。例如,如果我们有绝对路径
irrelevant_part/folder0/remaining_part/folderN
相关部分将是
folder0/remaining_part/folderN.
我们怎样才能获得这个结果,以便将它分配给一个变量,以便在脚本的其余部分使用?
编辑
我要求不要将此问题视为与我所指出的问题重复,因为它不适合我的问题。
一个可能的解决方案是:
cd irrelevant_part/folder0
for element in $(ls -R)
do
if [[ $element == *"."* ]]; then
f0=folder0
abbr_path=$element
# Substituting . with folder0 in the abbreviated path
abbr_path="${abbr_path/./$f0}"
nul=""
# Substituting : with null in the abbreviated path
requested_path="${abbr_path/:/$nul}"
fi
done
假设唯一名称:
my_var="$(find . -type d -name folderN 2>/dev/null|awk -F\folder0\/ '/folder0\//{print FS}')"