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 模式相符的名稱,並手動處理它們。