使用腳本重命名資料夾,Excel 文件中的變數

使用腳本重命名資料夾,Excel 文件中的變數

Linux檔案系統

我有一個包含 1500 個資料夾的目錄。我希望使用一個 Excel 文檔,該文檔的一列中有 1500 個資料夾名稱,下一列有一個唯一的 ID。我正在尋找腳本,以便腳本將資料夾重命名為新的唯一 ID。儘管我不知道如何編寫腳本,但任何人都可以幫助我,這似乎很容易。任何人都可以提供線上腳本的連結(我無法找到)。

Look at volume A for folder Var#1 (from excel)

if present on Volume A then mv Var#1 to Var#2 (from excel)

loop and grab next line of excel doc

答案1

好的,這是:

對於 $(cat test.csv) 中的 i

dir1=$(echo $i|sed 's/,.*//')

dir2=$(echo $i|sed 's/.*,//')

如果 [-d $dir1]

然後

如果 [ -d $dir2 ]

然後

echo $dir2 存在,跳過從 $dir1 到 $dir2 的移動

別的

MV $dir1 $dir2

完畢

答案2

所以,我是 Linux、Unix 和 Mac 用戶,編寫 Perl 和 bash 腳本。如果您有 power shell 或 cygwin,您可以執行以下操作,Windows 也可能有此功能,但請不要屏住呼吸:

無需完成整個事情,我認為您應該能夠按照您想要的方式進行修改...

  • 將資料儲存到 csv 檔案 (somefile.csv)
  • 在 bash shell 中

bash> for temp_line 在cat somefile.csv

echo mv $temp_line |sed 's/,/ /'

完成 >somefile.sh

在確定以下行會執行您想要的操作之前,請勿執行它!

bash>. ./somefile.sh

應該是這樣...注意,這是一個快速破解,可以通過更多錯誤檢查和其他內容來編寫,這超出了我的想像:)您可能遇到的另一個問題是文件中的空格/目錄名稱,只需添加引號即可。如果需要檢查目錄是否存在,可以加入以下 if 語句:

bash>if [ -d 'dir_name' ];然後...;fi

不用寫,這應該就夠了。稍後我可能會受到啟發,並將其寫在後續文章中。

答案3

這是不是答案,但我將其作為一個輸入,因為註釋不允許正確的格式或這麼多文字。

顯然,現有資料夾的名稱是唯一的(假設它們都在同一個超級資料夾中,或者它們顯示為完整路徑名 - 正如 @nerdwaller 所指出的)。根據定義,第二列中的唯一 ID 是唯一的。兩列是否唯一(不重疊)?考慮以下數據:

          舊名稱 新的唯一 ID
未來,或未來,1
就是那個問題。 2
快速棕色狐狸 3
跳過懶狗。 4
             ⋮⋮
午夜沉悶的往事,40
當我沉思時,41
虛弱和疲倦,42
             ⋮⋮
56 的答案
生命的終極問題,57
宇宙和一切都是 58
42 59
等等... 60

如果/當您嘗試重新命名weak_and_weary,為時42,您將與現有42資料夾發生衝突。解決此問題的最佳方法可能是檢查舊資料夾名稱中是否有與唯一 ID 模式相符的名稱,並手動處理它們。

相關內容