首页 > 解决方案 > 根据扩展标准移动文件的脚本

问题描述

我有一定数量的文件总是包含相同的名称但不同的扩展名,例如sample.datsample.txt等。我想创建一个脚本来查看sample.dat存在的位置,然后将所有具有名称的文件移动sample*.*到另一个目录中。

我知道如何用 来识别它们ls *.dat | sed 's/\(.*\)\..*/\1/',但是我想与类似的东西连接起来|| mv(第一部分的结果)*.* /otherdirectory/

标签: linuxbashshell

解决方案


像这样简单的东西?

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

推荐阅读