linux find命令、rename命令重命名等、批量修改文件名


find命令很有用:
-type d
-name 过滤文件名
-maxdepth 查找目录深度,默认会查找子目录,-maxdepth 1 表示当前目录。、

查找nginx

cd /; # 根目录开始,不会漏
find . -type d -name nginx; # 速度不慢

查找视频并输出到文件

window中输出到文件不换行的问题,加\r\n即可
find ./ -name "*.mp4" -printf "%f\r\n" >1.txt

常见的视频类型:

find ./ -name "*.mp4" -printf "%f\r\n" >1.txt;
find ./ -name "*.rmvb" -printf "%f\r\n" >>1.txt;
find ./ -name "*.avi" -printf "%f\r\n" >>1.txt;
find ./ -name "*.mkv" -printf "%f\r\n" >>1.txt;
find ./ -name "*.wmv" -printf "%f\r\n" >>1.txt;
find命令可以多条件吗?

可以,-o即可。

find . -name "*.mp4" -o -name "*.rmvb" -printf "%f\r\n" >1.txt

那么多视频类型为什么不用-o呢,是因为-printf 不会把前面的都打印出来,只会打印最后一个-name的,所以还是多写几行。

mtime参数的坑

问:查找修改时间在1天内的日志文件,命令怎么写?

find . -mtime 1 -name *;
上述命令对吗?

发现结果不太一致,查出的竟然昨天到前天的数据。 
mtime查询结果不符合预期问题排查

这是为什么呢?
find命令mtime的文档描述为:
This command works this way because the time since each file was last modified is
divided by 24 hours and any remainder is discarded. That means that to match -mtime 0, a file will have to have a modification in the past which is less than 24 hours ago.

翻译为:
此命令是这样工作的,因为自上次修改每个文件以来的时间是除以24小时,剩余部分将被丢弃。这意味着要匹配-mtime0,文件必须在不到24小时前的过去进行修改。

也就是说:
时间差/24=n,小数部分会被丢弃
(now-mtime)/24=n,小数部分会被丢弃

所以当n=0时,时间范围为 now-mtime=024+(024)=(024)
所以当n=1时,时间范围为 now-mtime=1
24+(024)=(2448)
所以当n=2时,时间范围为 now-mtime=224+(024)=(4872)
所以当n=3时,时间范围为 now-mtime=3
24+(024)=(7296)

所以这里的n=3,表示的是(72~96)小时。 +3 表示96小时之外的数据,相当于人们常规理解的第4天。

那么如何使用呢,记得n-1即可。

另外,还有-atime(access time)等,这里不太用的到。

rename

需求,下载的文件(夹)有wagnpan.com前缀,手动改太费劲,想要批量去掉:

find . -type d -name "wangpan.com-*" -exec rename  "wangpan.com-" "" {} \;
find . -type f -name "wangpan.com-*" -exec rename  "wangpan.com-" "" {} \;

其他

求解

给所有的.mp4文件外面生成一个同名目录,并把该MP4文件放进对应目录下该怎么写命令呢?
应该是find、-exec、sed一起使用。 但如何写呢?

win7 批量修改文件名

win7 如何批量修改文件名:

ren 命令是rename的简写,在win7中输入: rename /?  可以查看用法
ren *.pdf *._ele_common.pdf;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Linux中,可以使用`mv`命令来修改文件名,其基本语法如下: ``` mv [当前文件名] [新文件名] ``` 例如,要将文件`oldname.txt`改名为`newname.txt`,可以使用以下命令: ``` mv oldname.txt newname.txt ``` 如果要将文件移动到另一个目录并重命名,可以在新的目录中指定新的文件名,例如: ``` mv oldname.txt /path/to/newdir/newname.txt ``` 此命令将文件`oldname.txt`移动到`/path/to/newdir/`目录,并将其重命名为`newname.txt`。 需要注意的是,如果新文件名已经存在,则`mv`命令将覆盖原有文件。如果需要避免覆盖,可以使用`-i`选项来进行交互式操作,例如: ``` mv -i oldname.txt newname.txt ``` 此命令将在重命名时提示是否覆盖已存在的文件。 ### 回答2: 在Linux中,修改文件名的命令有多种,最常用的命令是mv。 mv命令的基本语法是:mv [选项] 源文件或目录 目标文件或目录 例如,想要将文件file1.txt重命名为file2.txt,可以使用以下命令: mv file1.txt file2.txt 如果要将文件移动到另一个目录并重命名,可以将目标文件或目录指定为完整的路径。例如,将文件file1.txt移动到目录dir并重命名为file2.txt,可以使用以下命令: mv file1.txt dir/file2.txt 除了mv命令,还可以使用rename命令批量修改文件名rename命令的基本语法是:rename '原始字符串' '替换字符串' 文件或目录 例如,将当前目录下所有的.txt文件扩展名改为.doc,可以使用以下命令rename 's/\.txt$/.doc/' *.txt 另外,对于具有更复杂修改需求的情况,可以使用正则表达式结合find命令来实现。例如,将当前目录下所有以file开头且扩展名为txt的文件重命名为以newfile开头的文件,可以使用以下命令: find . -name "file*.txt" -exec rename 's/^file/newfile/' {} \; 需要注意的是,修改文件名的命令在执行时需要小心,确保目标文件名不存在重复或错误的情况,以免造成不必要的数据损失。 ### 回答3: 在Linux系统中,我们可以使用`mv`命令来修改文件名。`mv`命令既可以用来移动文件位置,也可以用来重命名文件。 要修改文件名,我们需要在终端中输入以下命令: ``` mv [原文件名] [新文件名] ``` 其中,`[原文件名]`是需要修改的文件名,`[新文件名]`是想要修改后的文件名。 例如,如果我想将文件名为`oldfile.txt`的文件修改为`newfile.txt`,我可以输入以下命令: ``` mv oldfile.txt newfile.txt ``` 此时,文件名为`oldfile.txt`的文件将被修改为`newfile.txt`。如果在当前目录下没有找到`oldfile.txt`,则会报错。 需要注意的是,`mv`命令不仅可以修改文件名,还可以将文件移动到其他目录中。如果我们想要将文件`oldfile.txt`移动到目录`/home/user/`下,并且将其重命名为`newfile.txt`,我们可以输入以下命令: ``` mv oldfile.txt /home/user/newfile.txt ``` 如果目录`/home/user/`不存在,则会报错。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值