gpt4 book ai didi

linux - 使用 bash,如何删除特定目录中所有文件的扩展名?

转载 作者:IT王子 更新时间:2023-10-29 00:59:53 25 4
gpt4 key购买 nike

我想保留文件但删除它们的扩展名。这些文件没有相同的扩展名。我的最终目标是删除所有扩展名并将它们更改为我选择的一个扩展名。我有第二部分。

到目前为止我的代码:

#!/bin/bash
echo -n "Enter the directory: "
read path
#Remove all extensions
find $path -type f -exec mv '{}' '{}'.extension \; #add desired extension

最佳答案

为此,您不需要外部命令 find,而是单独在 bash 中执行。下面的脚本从文件夹 path 中的所有文件中删除扩展名。

for file in "$path"/*; do
[ -f "$file" ] || continue
mv "$file" "${file%.*}"
done

使用[ -f "$file"] 的原因只是为了安全检查。 glob 表达式“$path”/* 可能最终没有列出任何文件,在这种情况下,mv 命令将失败,因为没有文件。 [ -f "$file"] || continue 条件通过在 $file 变量为空时退出循环来保护这一点,其中 [ -f "$file"] 返回失败错误代码。 || 在复合语句中使用时,如果前一个命令失败,它将运行,因此当接下来点击 continue 时,for 循环终止。

如果你想添加一个新的扩展就这样做

mv "$file" "${file%.*}.extension"

关于linux - 使用 bash,如何删除特定目录中所有文件的扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46586447/

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