Перемещение файлов из одной папки в другую в зависимости от определенных условий

У меня сотни тысяч папок с фотографиями. По какой-то причине при экспорте они создали несколько сценариев вроде этого:

2019/01/01
2019/01/01 #2

Как мне написать команду linux (в идеале, которую можно запустить на Mac), которая может автоматически перемещать файлы

from 
2019/01/01 #2 
to 
2019/01/01

Любая помощь будет оценена. Это должно работать на любую дату, а также объединить содержимое. Где я борюсь, это я не могу понять, как получить каталог в исходном формате без выделенного экземпляра #

for dir in *#2/*; do mv "$dir"/* "${dir}"; done
0
задан 7 February 2020 в 20:55
2 ответа

Mampiasa mahita sy -exec :

find . -type d -name "* #*" -exec bash -O nullglob -c '
  for dir; do
    otherdir=${dir/ #*}
    if [ -d "$otherdir" ]; then
      for file in "$dir"/*; do
        mv -vi "$file" "$otherdir"
      done
      rmdir "$dir" && echo "deleted directory $dir"
    else
      mv -v "$dir" "$otherdir"
    fi
  done
' bash {} +

Hampiala ny rakitra rehetra avy amin'ny oh. 2019/01/01 # 2 hatramin'ny 2019/01/01 raha misy ny lahatahiry farany (raha tsy misy izany dia ny folder misy ny # dia novana anarana). Raha misy fisie ao amin'ny 2019/01/01 # 2 izay efa misy ao amin'ny fisie hafa dia mangataka fahazoan-dàlana hamindra ireo fisie ireo.
Rehefa vita ny hetsika hetsika dia manandrana mamafa ny folder (foana izao). Ny fiasan'ny hetsika / famafana rehetra dia amin'ny maody verosa.

Ilay nullglob nullglob nampidirina miaraka amin'ny for-loop dia manome antoka fa ny "$ dir" / * dia tsy mamerina rakitra raha efa foana ny lahatahiry.

1
ответ дан 26 February 2020 в 00:33

Arovy ny rakitrao alohan'ny hanandramanao an'ity. Mety hanimba ...

Anisan'ny olana ny fampiasana ho an'ny rehefa miverina amin'ny alàlan'ny lahatahiry misy elanelana amin'ny anarany. Hiafara amin'ny lisitra tsy mifanaraka ianao satria ny fotsy sy ny fiverenan'ny kalesiana dia samy mampisaraka ny saha. Mila mametraka ny IFS amin'ny fiverenan'ny kalesy fotsiny ianao. (Azonao atao ny mampiasa find -exec hiasa mivantana amin'ny fidiran'ny filesystem, fa ilay dia misavoritaka rehefa miasa miaraka amina wildcards misy akany)

Tokony hanao io asa io ianao, saingy ampitandremana fa fisie izay nifindra dia hanadino ireo mifanandrify amin'ireo lahatahiry haleha. Mihazakazaha avy ao amin'ny fampirimana faka etsy ambony.

# Set IFS to carriage return only.
IFS='
'
# Find all the matching folders and move the .jpg files out of them to the sibling folder.
for a in $(find . -type d -name *#*); do b=${a::-3}; mv $a/*.jpg $b/; rmdir $a; done

Vinavina vitsivitsy natao: - fa ny rafitra nofaritanao dia subfolders taona / volana / andro. (Raha misy \ ny anaran'ireo fampirimana dia mihombo kokoa) - fa manana fisie fotsiny ianao miaraka amin'ny tovana «112459] # 2 - te-hanala ireo lahatahiry # 2 ianao rehefa namindra ny fisie.

Jereo eto eto raha te-hanao zavatra hafahafa bebe kokoa amin'ny tadin'ny bash ...

1
ответ дан 26 February 2020 в 00:33

Теги

Похожие вопросы