2017-04-12 54 views
0

我正在查找某種腳本,將大約800個文件與單獨的案例編號例如:「1234567 - XXXX XXX」放置在一個文件夾中,複製到另一個文件夾(服務器)使用相同的情況下名字的目錄,子目錄前下:OSX:將文件複製到同名文件夾

「1234567 - XXXX XXX/01_Management/01_Correspondence」(子文件夾相同的所有文件夾)

綜上所述:複製一個文件,到與該文件具有相同名稱的另一個文件夾,將其放置在子文件夾中。

MACOS塞拉利昂

謝謝 -Theis

+0

不要在目標目錄已經存在,其中必須將文件複製到?文件名是否總是隻有一個多位數字(沒有字母),後跟一個空格,然後是連字符? –

回答

0

你可以這樣做與bash腳本。

首先備份!

將下列內容保存在你的主目錄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 
相關問題