当前位置: 首页 > 面试题库 >

查找多个文件并在Linux中重命名它们

富波光
2023-03-14
问题内容

我有类似的文件a_dbg.txt, b_dbg.txt ...Suse 10系统中。我想编写一个bash
shell脚本,该脚本应该通过从文件中删除“ _dbg”来重命名这些文件。

Google建议我使用rename命令。所以我rename _dbg.txt .txt *dbg*CURRENT_FOLDER

我的实际CURRENT_FOLDER文件包含以下文件。

CURRENT_FOLDER/a_dbg.txt
CURRENT_FOLDER/b_dbg.txt
CURRENT_FOLDER/XX/c_dbg.txt
CURRENT_FOLDER/YY/d_dbg.txt

执行rename命令后,

CURRENT_FOLDER/a.txt
CURRENT_FOLDER/b.txt
CURRENT_FOLDER/XX/c_dbg.txt
CURRENT_FOLDER/YY/d_dbg.txt

它不是递归执行的操作,如何使此命令重命名所有子目录中的文件。Like
XXYY我将有很多子目录,这些子目录的名称不可预测。而且我CURRENT_FOLDER还将拥有一些其他文件。


问题答案:

您可以用来find递归查找所有匹配文件:

$ find . -iname "*dbg*" -exec rename _dbg.txt .txt '{}' \;

编辑: 什么'{}'\;是谁?

-exec参数使find
rename对找到的每个匹配文件执行。'{}'将被替换为文件的路径名。最后一个标记\;仅用于标记exec表达式的结尾。

手册页中对找到的所有内容进行了很好的描述:

 -exec utility [argument ...] ;
         True if the program named utility returns a zero value as its
         exit status.  Optional arguments may be passed to the utility.
         The expression must be terminated by a semicolon (``;'').  If you
         invoke find from a shell you may need to quote the semicolon if
         the shell would otherwise treat it as a control operator.  If the
         string ``{}'' appears anywhere in the utility name or the argu-
         ments it is replaced by the pathname of the current file.
         Utility will be executed from the directory from which find was
         executed.  Utility and arguments are not subject to the further
         expansion of shell patterns and constructs.


 类似资料:
  • 问题内容: 我使用此命令查找具有给定模式的文件,然后将其重命名为其他文件 运行此命令时,我看到一些类似的输出 但是最后,当我运行时,我看到了旧文件名。 问题答案: 您正在回显’mv’命令,而不是实际执行它。改成:

  • 问题内容: 如何重命名以下文件: 分为以下几个: 相关代码为: 问题答案: 一行可以分为:

  • 问题内容: 我正在尝试使用mv命令执行三件事,但不确定是否可行?可能需要一个脚本。不知道怎么写。所有文件都在同一文件夹中。 1)以v9.zip结尾的文件应该只是.zip(已删除v9) 2)包含_的文件应为- 3)在大写字母旁边的小写字母(或小写字母旁边的大写字母)的文件之间应有一个空格。因此,MoveOverNow将变为“现在移过”,而ruNaway将变为ruN离开。[AZ] [az]或[az]

  • 问题内容: 我正在尝试使用Python重命名目录中的某些文件。 假设我有一个名为的文件,并且想要删除,所以我得到的文件名将是 我正在尝试使用,但无法正常工作。我也考虑过使用字符串操作,但也没有成功。 问题答案: 使用重命名或移动文件或目录。

  • 问题内容: 我有大量的格式文件,以及。 如何重命名这些文件,使它们全部为大写,而忽略名称的数字部分? 问题答案:

  • 问题内容: 如何在Linux中的多个文件中替换特定术语? 例如,我的目录中有许多文件: file1.txt file2.txt file3.txt 我需要找到一个单词“ searchword”并将其替换为“ replaceword”。 问题答案: 使用bash 4.0,您可以递归搜索文件 或与GNU查找