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