在此先感謝您的時間和幫助。在保留文件的同時用Bash刪除文件結構中的級別
我有一個情況,我有一個DIR包含幾十個子DIR,其中所有的子DIR只包含一個文件(出於某些錯誤的原因)。我試圖將所有文件在DIR樹中上移兩級,同時以其他所有方式保留文件結構。這裏是我的意思的例子:
|--- DIR.Main
|--- |---DIR.Sub-A
|--- |--- |--- File.Sub-A
|--- |---DIR.Sub-B
|--- |--- |--- File.Sub-B
|--- |---DIR.Sub-C
|--- |--- |--- File.Sub-C
|-->Continue for approx. 50 DIR.Subs
我不需要在文件結構中的DIR.Sub水平,並希望它看起來像這個:
|--- DIR.Main
|--- |---File.Sub-A
|--- |---File.Sub-B
|--- |---File.Sub-C
這裏是什麼複利問題,雖然:文件名不整潔和有序的邏輯與前面的例子中,而是被隨意命名如下:
|--- DIR.Main
|--- |---DIR.Sasjaljesea
|--- |--- |--- File.Sasjalsaejesea.mpg
|--- |---DIR.qwerqwerewqwer
|--- |--- |--- File.qwerqweresezswqwer.mpg
|--- |---DIR.xcbxcvxcvbxcvb
|--- |--- |--- File.xcsfasdbxcvxcvbxcvb.mpg
|-->ETC
然而,救命之恩的是,在上述考試所有文件共享相同的文件類型(在這種情況下爲mpg)。
我讀過的MV,並在猛砸CP相關文件,並沒有能夠拿出一個辦法做到這一點在一個沒有通過手動輸入所有的文件名。我還研究了Xrandr和類似命令的選項。我已經能夠得出一個解決方案最接近的是這樣的:
find /path/to/search -type f -iname "*.mp3" -exec mv {} path/to/music \;
從這個答案摘自:Moving multiple files in subdirectories (and/or splitting strings by multichar delimeter) [bash]
在哪裏我明明糾正-iname改爲.mpg和DIR的適合我的情況。
當我做這個它沒有找到的所有文件,並將它們轉移到我想要的文件夾,但它並置的所有文件到一個不可讀.MPG文件,而不是複製遞歸每個單獨的文件,並保持文件結構,我想。我已經在上面的命令中用cp遞歸地研究了cp,但是這似乎什麼也不做,即使當我作爲SUDO執行時也是如此。 cp帶有額外的問題,我不想複製文件,只需刪除它們所包含的中間文件夾即可。
你可能已經想通了,我試圖避免簡單地使用Linux中的GUI和去猛砸路線,原因很明顯,這將需要幾個小時才能做到這一點的窗口管理器,而我敢肯定有是在幾秒鐘內在Bash中完成的一種方法。這是一項任務,在Linux文件管理器中通常需要幾秒鐘的時間,如果有人正在處理少於十幾個文件夾和文件移動,但目前的情況是,幾十個不必要的DIR包裝只有一個文件。因此,我需要一個乾淨的Bash解決方案。
再次感謝您的幫助。這是幾個星期來令我感到沮喪的問題。
我歡迎任何問題。
對文件操作的模式問題,尤其是'DIR ...'圖。繼續發帖,祝你好運! – shellter 2014-09-29 03:33:26