AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 64810
Accepted
rogeriopvl
rogeriopvl
Asked: 2009-09-13 08:40:35 +0800 CST2009-09-13 08:40:35 +0800 CST 2009-09-13 08:40:35 +0800 CST

Shell命令删除文件扩展名

  • 772

我有一个包含自动生成的文件的目录,这些文件都以 .sample 扩展名结尾。我想有一种方法可以在一个终端命令中从它们中删除 .sample 扩展名。

我试过这个:

mv ./{$1}*.sample ./$1

但这不起作用,因为我肯定将 {$1} 放置在错误的位置或方式。谁能指出正确的方向?

提前致谢。

unix
  • 5 5 个回答
  • 4636 Views

5 个回答

  • Voted
  1. markdrayton
    2009-09-13T09:33:47+08:002009-09-13T09:33:47+08:00
    $ touch {a,b,c,"white space"}.sample
    
    $ ls *.sample
    a.sample        c.sample
    b.sample        white space.sample
    
    $ for SAMPLE in *.sample; do mv -v "$SAMPLE" "${SAMPLE%.sample}"; done
    a.sample -> a
    b.sample -> b
    c.sample -> c
    white space.sample -> white space
    

    编辑:另见${parameter#word},word从前面删除parameter:

    $ FILENAME=140909_stats_report.txt
    $ echo "${FILENAME#140909_}"
    stats_report.txt
    

    我记得我需要从我的(英国)键盘上的#和键的位置中需要哪些:在左侧是这样的匹配项。在我注意到我每次都必须检查手册页之前:~)%#%

    这些扩展还支持 shell 通配符:

    $ echo "${FILENAME%.*}"
    140909_stats_report
    

    #和形式匹配的%最短扩展word。您可以使用##或%%进行最长匹​​配。例如:

    $ FILENAME=140909_stats_report.txt
    $ echo "${FILENAME#*_}"  # match as little as possible
    stats_report.txt
    $ echo "${FILENAME##*_}" # match as much as possible
    report.txt
    

    掌握这些扩展是值得的。还有更多,包括(有点古怪)正则表达式支持、子字符串以及设置默认值或获取可变长度的方法。男人 bash,当然。

    • 19
  2. agsamek
    2009-09-13T09:12:51+08:002009-09-13T09:12:51+08:00
    for n in *.sample ; do mv "$n" "$(basename "$n" .sample)" ; done
    
    • 6
  3. Dennis Williamson
    2009-09-13T11:28:27+08:002009-09-13T11:28:27+08:00

    该rename命令接受 Perl 表达式:

    rename 's/\.sample$//' *.sample
    

    例子:

    $ ls *sample*
    file0.sample  file2.sample  foo.sample.sample
    file1.sample  file3.sample  with space.sample
    $ rename 's/\.sample$//' *.sample
    $ ls *sample*
    foo.sample
    

    在我的 Ubuntu 系统上,rename符号链接到包中的prename脚本perl。

    • 5
  4. Cristian Ciupitu
    2009-09-13T11:09:40+08:002009-09-13T11:09:40+08:00
    rename '.sample' '' *.sample
    

    在 Fedora 上,该rename命令包含在util-linux-ng包中。

    • 1
  5. Best Answer
    radius
    2009-09-13T08:58:02+08:002009-09-13T08:58:02+08:00

    做到这一点的众多方法之一:

    for i in *.sample; do NEWNAME=`echo "$i" | sed 's/\.sample//'`; mv "$i" "$NEWNAME"; done
    
    • -3

相关问题

  • Windows 有符号链接吗?

  • 控制 UNIX 目录内容用户组所有权

  • 在命令行上从 csv 文件中过滤带有空格字符的字段

  • 如何将 VAR 从子 shell 导出到父 shell?

  • 查找文件大小(以 MB 为单位)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve