gpt4 book ai didi

linux - 在 while 循环中隐藏子目录

转载 作者:太空宇宙 更新时间:2023-11-04 10:34:05 24 4
gpt4 key购买 nike

我需要制作一个创建软/符号链接(symbolic link)的脚本,但还应该检测“~/linkedfiles”目录中是否已经存在链接,但问题是 $file 还包含子目录。 ($file 看起来像这样:'~/realfiles/files/file23.gz',但我只需要'file23.gz'。)所以我的问题是,如何删除 $file 中的子目录?

这里有一些代码作为例子:

for file in ~/realfiles/files/*.gz
do

echo "Linking file: $file"
ln -s $file ~/linkedfiles
if [ $? -ne 0 ]; then
echo "[FAIL] Linking of $file failed!"
else
echo "[SUCCESS] $file successfully linked."
fi
done

最佳答案

看来您需要路径的基本名称。有两种方法可以做到这一点——经典的可靠方法是使用 basename命令,而现代的并不总是可靠的方法是使用 shell parameter expansion .

for file in ~/realfiles/files/*.gz
do
echo "Linking file: $file"
ln -s "$file" "~/linkedfiles/$(basename "$file")"
if [ $? -ne 0 ]
then echo "[FAIL] Linking of $file failed!"
else echo "[SUCCESS] $file successfully linked."
fi
done

或者:

for file in ~/realfiles/files/*.gz
do
echo "Linking file: $file"
ln -s "$file" "~/linkedfiles/${file##*/}"
if [ $? -ne 0 ]
then echo "[FAIL] Linking of $file failed!"
else echo "[SUCCESS] $file successfully linked."
fi
done

在这两个脚本中,文件 ~/realfiles/files/file23.gz 将链接到 ~/linkedfiles/file23.gz,这就是我认为的之后(尽管还有提高问题清晰度的空间,例如通过引用样本文件名所需的结果)。

关于linux - 在 while 循环中隐藏子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38376284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com