![移动和重命名没有扩展名的文件](https://linux22.com/image/1142253/%E7%A7%BB%E5%8A%A8%E5%92%8C%E9%87%8D%E5%91%BD%E5%90%8D%E6%B2%A1%E6%9C%89%E6%89%A9%E5%B1%95%E5%90%8D%E7%9A%84%E6%96%87%E4%BB%B6.png)
由于我对 bash 还很陌生,所以我无法弄清楚如何执行这个 bash 脚本。
我想抓取目录中的所有文件,更改它们的名称(我认为更改名称部分可以使用 完成mv
)并将它们移动到另一个目录(再次使用mv
)。问题是文件没有扩展名。它们的名称只是数字,如:1
、2
等3
。只有数字。如何抓取每个无扩展名的文件,更改其名称并移动它?
谢谢。
答案1
您可以使用扩展通配符搜索名称中仅包含数字的文件:
shopt -s extglob
for file in +([0-9]) ; do
newname=newpath/... # Build the new name.
mv "$file" "$newname"
done
答案2
就我个人而言,我会使用basename
命令来抓取文件名本身,并使用 grep 测试它是否带有点字符,这意味着它具有扩展名。这可以在 if 语句中使用它,如果确实如此,则使用continue
语句转到下一个文件。至于移动,这可以在 if 语句之后进行。这样,mv
除非命令没有扩展名,否则命令是无法访问的