使用 shell 脚本在文件夹中查找名称相似的文件

使用 shell 脚本在文件夹中查找名称相似的文件

我需要从具有相同 ID 的文件夹中选择 xml 文件。例如,有名称为

  1. S-000001-0-0.xml
  2. S-000001-0-1.xml
  3. S-000001-0-2.xml
  4. S-000001-0-3.xml
  5. S-000001-0-4.xml
  6. S-000002-0-0.xml
  7. S-000003-0-0.xml

1到5个Xml属于一个ID,6,7属于不同ID。我的要求是一起选择类型1到5的文件并移动到新文件夹。

答案1

您可以使用全局像这样:

mv S-000001-*.xml dir-to-move-to

答案2

for x in `ls S*.xml | egrep -o '[0-9]{6}' | sort | uniq`; do mkdir -p /tmp/$x; cp S-$x-* /tmp/$x/.; done

这将在 /tmp 中创建一个文件夹 ID(针对每个 ID),然后将具有相同 ID 的所有文件复制到那里。

如果测试没问题,可以替换cp为。mv

我假设 ID 有 6 位数字,所有其他数字都较小。

答案3

find /path/to/old/directory -name 'S-??????-?-?.xml' -type f -print0 | \
    xargs -r0 mv -vt /path/to/new/directory

相关内容