Наутилус сохраняет историю каталогов посещаемой, который доступен через, это - меню истории или панель.
Это, кажется, не сохраняет вид записей, которые Вы ищете. Если Вам нужен этот вид безопасности, контролирующей Вас, должен рассмотреть установку файловой системы, которая регистрирует подобные изменения или позволяет создавать снимки так, можно сделать собственные сравнения.
for dir in */*; do # loop over the directories
( # run in a subshell ...
cd "$dir" # ... so we don't have to cd back
files=(*) # store the filenames in a zero-indexed array
for index in "${!files[@]}"; do
file=${files[$index]}
ext=${file##*.}
newname=$(printf "%02d.%s" $((index+1)) "$ext")
mv "$file" "$newname"
done
)
done
Предположим, что у Вас есть файл без расширения. В этом случае это будет иметь то же имя кроме с ведущими числами (например. my_file
=> 05.my_file
)
Все нескрытые записи каталога будут переименованы, включая каталоги.
У Вас есть два набора проблем здесь:
Это обработает оба условия гладко, хотя Вы захотите изменить переменную IMAGE_TYPES, если Вы решите включать другие расширения также.
#!/bin/bash
shopt -s extglob
shopt -s nocaseglob
IMAGE_TYPES='jpg|png|gif'
IFS=$'\n' dirlist=(`find "$PWD" -type d`)
for dir in "${dirlist[@]}"; do
cd "$dir"
ls *.+($IMAGE_TYPES) > /dev/null 2>&1 || continue
counter=0
for file in *.+($IMAGE_TYPES); do
printf -v newname "%.3d.%s" $((counter += 1)) "${file##*.}"
mv --verbose "$file" "$newname"
done
done
Если у Вас есть название файла, можно добраться, это - число путем выполнения:
ls -1 <your_dir> | grep <file_name> -B 1000 | wc -l
ls
не хорошая идея. Это будет главным образом работать здесь, но основанное на подстановочном знаке решение будет полностью работать, итак, почему довольствуются вторым местом?
– Gilles 'SO- stop being evil'
24.04.2012, 02:16
touch junk precious $'junk\nprecious'; ls -1 | grep junk | xargs -l rm
. Вы действительно не заботились об этом precious
файл, не так ли? Не говоря уже о том, что ограничение на самое большее 1 000 файлов или то, что Вы находите 03.jpg
когда Вы ищете 3.jpg
. Я отрекаюсь от своего комментария для второсортного, это действительно повреждается, и это неполно для начальной загрузки.
– Gilles 'SO- stop being evil'
24.04.2012, 20:26
Я создал то же дерево и построил ваше движение. Вот что я придумал:
n=0 IFS=.; set -f ./[e]vent*/*/*
for f do [ -n "${f##./\[*}" ] || break
[ "$d" = "${f%/*}" ] || i=0 d=${f%/*}
mv=': mv "${'$((n=$n+1))'}" "${'$n'%%/*}/'
printf "$mv%.2d%.0s.%s\"\n" $((i=$i+1)) ${f##*/}
done | sh -sx -- "$@"
Без этой последней |
трубы на конце вот что он печатает:
mv "${1}" "${1%/*}/01.jpg"
mv "${2}" "${2%/*}/02.png"
mv "${3}" "${3%/*}/01.jpg"
mv "${4}" "${4%/*}/02.png"
mv "${5}" "${5%/*}/03.gif"
mv "${6}" "${6%/*}/01.jpg"
mv "${7}" "${7%/*}/02.png"
mv "${8}" "${8%/*}/01.jpg"
mv "${9}" "${9%/*}/02.png"
mv "${10}" "${10%/*}/03.gif"
Это не похоже на много, я знаю, но здесь важно то, что что вам не нужно беспокоиться о каких-либо странных именах файлов или о чем-либо из этого - предполагаемое место назначения для этого вывода - оболочка, которая разделяет позиционный массив с циклом for
, который его сгенерировал. У меня есть один такой в команде - и он настроен для предоставления отладочного вывода, который выглядит следующим образом:
+ : mv ./event-a/album-a/a.jpg ./event-a/album-a/01.jpg
+ : mv ./event-a/album-a/x.png ./event-a/album-a/02.png
+ : mv ./event-a/album-b/a.jpg ./event-a/album-b/01.jpg
+ : mv ./event-a/album-b/x.png ./event-a/album-b/02.png
+ : mv ./event-a/album-b/y.gif ./event-a/album-b/03.gif
+ : mv ./event-b/album-x/a.jpg ./event-b/album-x/01.jpg
+ : mv ./event-b/album-x/x.png ./event-b/album-x/02.png
+ : mv ./event-b/album-y/a.jpg ./event-b/album-y/01.jpg
+ : mv ./event-b/album-y/x.png ./event-b/album-y/02.png
+ : mv ./event-b/album-y/y.gif ./event-b/album-y/03.gif
Вот как это выглядит, когда :
является первым символом в Строка формата printf
. Когда я удаляю его и выполняю команду:
ls ./event*/*/
./event-a/album-a/:
01.jpg 02.png
./event-a/album-b/:
01.jpg 02.png 03.gif
./event-b/album-x/:
01.jpg 02.png
./event-b/album-y/:
01.jpg 02.png 03.gif
Это похоже на ваш запрос. Думаю, вы не сможете превзойти результаты.
ext=...
– thumbmunkeys 26.08.2014, 23:25