查找具有给定名称的目录的路径
Finding path to directories with a given name
我正在尝试编写一个脚本,该脚本针对作为参数给出的任何名称打印具有该名称的人的主目录的路径列表。示例:
$ shownames jakub anna
/home/users/jakubo
/home/students/j_luczka
/home/students/kubeusz
/home/students/jakub5z
/home/students/qwertinx
/home/users/lazinska
/home/students/annalaz
我在本地计算机上使用 Git Bash 文件和目录
这是我到目前为止写的:
for iter in "$@"; do find "$(pwd)"/home -type d -name "*$iter*"; done;
正如预期的那样,我得到了完整路径。
$ ./shownames.sh jakub
/c/Users/User/students/home/users/jakubo
但是如果我只想获取 /home/...... 部分怎么办?没有完整的 c/Users.. 所以部分?
提前致谢!
如果删除不需要的字符串对您来说可行,只需删除它们:
使用 bash 子字符串 (${var:lenght}
) 你的 shownames.sh 将是:
for iter in "$@"; do find "$(pwd)"/home -type d -name "*$iter*"; done | while read p; do echo ${p:22}; done
结果:
root@fd416de714ab:/c/Users/User/students# ./shownames.sh anna jakub
/home/users/anna
/home/users/jakubo
root@fd416de714ab:/c/Users/User/students#
使用剪切工具,您的 shownames.sh 将是:
for iter in "$@"; do find "$(pwd)"/home -type d -name "*$iter*"; done | cut -d/ -f 1,6-
结果相同
此外,$(pwd)/ 似乎是不必要的:
for iter in "$@"; do find ./home -type d -name "*$iter*"; done | while read p; do echo ${p:1}; done
我正在尝试编写一个脚本,该脚本针对作为参数给出的任何名称打印具有该名称的人的主目录的路径列表。示例:
$ shownames jakub anna
/home/users/jakubo
/home/students/j_luczka
/home/students/kubeusz
/home/students/jakub5z
/home/students/qwertinx
/home/users/lazinska
/home/students/annalaz
我在本地计算机上使用 Git Bash 文件和目录
这是我到目前为止写的:
for iter in "$@"; do find "$(pwd)"/home -type d -name "*$iter*"; done;
正如预期的那样,我得到了完整路径。
$ ./shownames.sh jakub
/c/Users/User/students/home/users/jakubo
但是如果我只想获取 /home/...... 部分怎么办?没有完整的 c/Users.. 所以部分?
提前致谢!
如果删除不需要的字符串对您来说可行,只需删除它们:
使用 bash 子字符串 (${var:lenght}
) 你的 shownames.sh 将是:
for iter in "$@"; do find "$(pwd)"/home -type d -name "*$iter*"; done | while read p; do echo ${p:22}; done
结果:
root@fd416de714ab:/c/Users/User/students# ./shownames.sh anna jakub
/home/users/anna
/home/users/jakubo
root@fd416de714ab:/c/Users/User/students#
使用剪切工具,您的 shownames.sh 将是:
for iter in "$@"; do find "$(pwd)"/home -type d -name "*$iter*"; done | cut -d/ -f 1,6-
结果相同
此外,$(pwd)/ 似乎是不必要的:
for iter in "$@"; do find ./home -type d -name "*$iter*"; done | while read p; do echo ${p:1}; done