Mv

忘記了在同一分區上移動數百萬個文件的正確語法

  • May 25, 2019

我有一個命令行指令,可以將 100k 的 jpg 文件移動到同一磁碟/卷/分區上的正確目錄,並且不使用 xargs。怪癖是 jpg 有空格和多個句點或點。例如:“古怪的 image.45 xyz.001 00.78.jpg”。另一個怪癖是古怪的模式是指一組,所以有幾千張這樣的jpg,在最終的jpg擴展之前插入了一組額外的數字:“wacky image.45 xyz.001 00.78.details_0_34748-836389.jpg。我不確定是誰為這台機器做出了設計決定,但不是我!無論如何,我有一些類似的東西:

for f in ./“wacky image.45 xyz.name.s.00.78”*; do
   mv $f /path/to/destination/;
done

我不確定我錯過了什麼。

編輯:使用 MacOS 終端應用程序,它的行為在很大程度上類似於 BSD。

Arkadiusz Drabczyk 用“Put $ f in double quotes: " $ f"" 在上面。

使用它,我可以將 1M+ 文件移動到同一磁碟/卷/分區上的不同目錄。我編輯了這個問題,但我也會把它放在這裡。我正在使用 MacOS 10.14 和終端應用程序,它的行為在很大程度上類似於 BSD。無論好壞,Apple 不再允許在其作業系統上使用 32 位應用程序,因此每個 CLI 工具都是以 64 位編譯的。也許這就是允許大型參數列表的原因?

for f in ./"wacky image.45 xyz.name.s.00.78"*; do
   mv "$f" /path/to/destination/;
done 

(注意引號)有同樣的問題

mv ./"wacky image.45 xyz.name.s.00.78"* /path/to/destination/

他們都是全球性的。您需要“數百萬”個文件是

find . -iname 'wacky image.45 xyz.name.s.00.78*'  -exec mv "{}"  /path/to/destination/

或者如果你想要一些每個文件的邏輯

while read -r F ; do
   mv "$F"  /path/to/destination/
done < <(find . -iname 'wacky image.45 xyz.name.s.00.78*' )

引用自:https://unix.stackexchange.com/questions/520511