为所有 bash 文件添加 .sh 扩展名

威廉

我有一个包含多个文件的目录,其中一些文件是 bash 脚本,但它们的名称不包含 .sh 扩展名。我知道我需要使用 file 命令来了解带有 -type 选项的文件类型,我也知道我可以使用 xargs 重定向输出,以便我可以使用原始名称 + .sh 扩展名重命名文件。问题是我不知道如何将所有命令连接在一起,以及如何查找只有 bash ASCII 文本可执行文件的文件类型。知道如何用一个简单的命令做到这一点吗?

亚历克斯

尽管这不能完成您的作业,但不需要findas grepkann 递归搜索文件目录-r(甚至在使用通配符传递文件名时也不需要)

grep -lIw '^#!.*bash' dir/!(*.sh) | xargs -I_ mv _ _.sh

grep -r dir将搜索所有子目录中的所有文件(此处未使用)

grep-l类似于-H为每个匹配打印文件名,但抑制正常输出。此外,它在第一场比赛后停止类似于-q-m1

grep-I排除二进制文件,只处理文本文件

grep -w bash将只匹配整个单词(不匹配bash ed)


正则表达式^ #!仅匹配行首(不匹配 # #!

正则表达式.匹配任何字节*任何出现 =.*任何字符串


路径名扩展(通配)*.sh匹配模式 file.sh

扩展通配符!(pattern)匹配除模式之外的任何内容

LSdir/!(*.sh)列出的所有文件目录不包括DIR / file.sh文件


xargs-I 模式在此示例中使用的每个位置模式上插入参数_

mv   _     _  .sh
mv file1 file1.sh
mv file2 file2.sh

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

重命名所有“。” 文件名中扩展名“ _”(扩展名除外)

什么是Bash文件扩展名?

在Bash中获取文件扩展名

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

Shell Bash将扩展名添加到没有一个文件

Bash脚本检查具有特定扩展名的文件

如何列出除扩展名[jpg,png,mkv等]以外的所有文件?[BASH通配符]

Bash复制与给定扩展名不匹配的所有文件

对bash脚本使用.sh或.bash扩展名?

Bash查找大小为零的文件并删除具有不同扩展名的文件

Bash:更改目录中所有文件的文件扩展名并复制奇数行

我应该在所有脚本上都添加* .sh和* .rb文件扩展名吗?

bash更改文件扩展名的问题

Bash:列出所有带有.addr_book的文件,不带文件扩展名

在bash 3.2中复制具有扩展扩展名的多个文件的数组

bash-查找所有具有相同名称的文件,无论其扩展名如何

在Mac上执行bash和sh文件,而无需编写扩展名

将所有以特定扩展名结尾的文件与shell glob匹配(例如,所有以.sh结尾的文件)

删除所有扩展名为“ .sh”的文件,但通过终端保留一个与扩展名匹配的文件

扩展名为bash和sh的文件

运行* .sh文件而不输入其.sh扩展名

在bash shell的两面列出没有扩展名的文件,但保留原始文件

在bash中使用if条件语句移动所有文件时跳过“特定文件扩展名文件”

在 bash 中为特定文件添加额外的扩展名

Bash 文件扩展名

如何在 Bash 中找到包含某些文件扩展名的所有文件夹?

如何对目录中带有 json 扩展名的所有文件运行 bash 脚本?

bash 循环遍历没有扩展名的文件

bash:删除许多具有相同扩展名的文件