OSX:将文件复制到具有相同名称的文件夹

时间:2017-04-12 08:26:57

标签: bash macos terminal

我正在寻找某种类型的脚本,将大约800个文件与单独的案例编号复制:“1234567 - XXXX XXX”放在一个文件夹中,放入另一个文件夹(服务器)的目录中相同的案例名称,在子文件夹ex:

“1234567 - XXXX XXX / 01_Management / 01_Correspondence”(所有文件夹的子文件夹相同)

总结:将一个文件复制到另一个与文件同名的文件夹,并将其放在子文件夹中。

macOS Sierra

谢谢 -Theis

1 个答案:

答案 0 :(得分:0)

您可以使用bash脚本执行此操作。

先备份!

将以下内容保存为您的HOME目录reorganise

#!/bin/bash

find $(pwd) -name "* -*" -print0 | while read -d $'\0' f; do
   echo Processing file $f...
   base=$(basename "$f")
   echo "   base: $base"
   case=${base/ -*/}
   echo "   case: $case"
   # EDIT THE FOLLOWING LINE TO BE CORRECT FOR YOU !!!
   newplace="/path/to/new/place/$case"
   echo mkdir -p "$newplace"
   echo cp "$f" "$newplace"
done

然后启动Terminal并输入以下内容以使脚本可执行:

chmod +x reorganise

然后转到文件所在的目录:

cd where/your/files/are

然后您可以使用以下命令运行脚本:

$HOME/organise

它会告诉你它会做什么,而不做任何事情。如果您喜欢,可以删除第二行和第三行到最后一行的单词echo并再次运行。

您至少需要编辑指定的行。

示例输出

Processing file /Users/mark/tmp/1234563 - fredb...
   base: 1234563 - fredb
   case: 1234563
mkdir -p /path/to/new/place/1234563
cp /Users/mark/tmp/1234563 - fredb /path/to/new/place/1234563
Processing file /Users/mark/tmp/1234567 - fred...
   base: 1234567 - fred
   case: 1234567
mkdir -p /path/to/new/place/1234567
cp /Users/mark/tmp/1234567 - fred /path/to/new/place/1234567