这是针对bash安装脚本的。脚本foo.sh将“DIRECTORY”作为参数。比如,有一个目录/ TEST / TEST_1A / TEST_2A / TEST_3和另一个目录/ TEST / TEST_1B / TEST_2B / TEST_3。
脚本:foo.sh简介。
DIR=`find $HOME -type d -name $1 | head 1'
if [ DIR is set to a directory ]
then
rm -rf $DIR
用法:foo.sh TEST_3
现在从脚本中,只能删除/ TEST / TEST_1A / TEST_2A / TEST_3。要删除/ TEST / TEST_1B / TEST_2B / TEST_3,我需要在find命令中使用reg exp来微调删除以解决目录冲突。
修改上述脚本的查找部分,如下所示
DIR='find $HOME -type d -regexp $1 | head 1
新用法:foo.sh TEST_2B / TEST_3
但是“找到”命令FAILS将DIR设置为/ TEST / TEST_1B / TEST_2B / TEST_3,而是返回空&因此DIR是空的,我永远不会删除/ TEST / TEST_1B / TEST_2B / TEST_3
如何更改脚本,以便find可以在JUST上执行目录名称,也可以在没有问题的情况下执行目录路径。事实上,一些用户可能会将部分目录路径作为“foo.sh”的参数。我希望“foo.sh”能够工作,即使在这种情况下也是如此
答案 0 :(得分:0)
如果我这样做,我会把它全部链接起来:
find $HOME -type d -name $1 | grep '\bTEST_.*?A\b' | xargs rm -rf
只有当它们位于包含“TEST_A”
的路径上时,才会删除所有目录