linux - 根据扩展标准移动文件的脚本
问题描述
我有一定数量的文件总是包含相同的名称但不同的扩展名,例如sample.dat
,sample.txt
等。我想创建一个脚本来查看sample.dat
存在的位置,然后将所有具有名称的文件移动sample*.*
到另一个目录中。
我知道如何用 来识别它们ls *.dat | sed 's/\(.*\)\..*/\1/'
,但是我想与类似的东西连接起来|| mv
(第一部分的结果)*.* /otherdirectory/
解决方案
像这样简单的东西?
dat_roots=$(ls *.dat | sed 's/\.dat$//')
for i in $dat_roots; do
echo mv ${i}*.* other-directory
done
这将破坏包含空格的文件名,所以要小心。
或者如果空格是一个问题,这将完成这项工作,但可读性较差。
ls *.dat | sed 's/\.dat$//' | while read root; do
mv "${root}"*.* other-directory
done
推荐阅读
- laravel - 如何从选择输入 laravel 中获取多个选项
- javascript - 异步函数调用中的回调错误
- c - POSIX 线程 API 是如何版本化的,自 1995 年以来它是否已更新?
- angular - 在 Angular 模板语法中,当使用嵌套的 *ngFor(或 ngForOf)时,是否可以跟踪较低级别项目的绝对计数?
- python - SQL / SQLAlchemy 计数不同的日期
- vb.net - 拔下usb串口/串口时如何显示msgbox?
- html - 使用 DLL 从单独的项目渲染视图
- python - 如何按年扩展熊猫时间戳?
- mysql - mySQL 索引参数和限制
- mysql - 仅当表中不存在值时才将表单中的值插入我的数据库表中