Проверьте текущий каталог, в котором вы находитесь:
$ pwd
Если вы не в $ HOME / Desktop /
, перейдите к нему (используя cd ~ / Desktop /
).
После выполните эту команду:
$ ls
Эта команда выведет список всех файлов в текущем каталоге, проверьте, нашли ли вы myfile.py
. Если вы предпочитаете, вы можете фильтровать свой поиск с помощью grep, например:
$ ls | grep 'myfile.py'
После того, как вы убедитесь, что в текущем каталоге у вас есть файл с именем myfile.py
, вы сможете запустить:
python3 myfile.py > myfile.html
src="/pathto/large_folder"
dest="/tmp/3chars"
mkdir -p "$dest" || exit 1
cd "$src" && \
find . -type f -name '???*' -exec sh -c '
for f
do
b=${f##*/}
d=${b%"${b#???}"}_.jpg
[ -d "$dest/$d" ] || mkdir -p "$dest/$d"
mv "$f" "$dest/$d/."
done
' x {} +
Существуют инструменты, значительно упрощающие переименование файлов. Например, используя любую из реализаций Perl rename
, часто доступных под именем prename
:
prename '$dir = substr($_,0,3); mkdir $dir; $_ = "$dir/$_"' *.jpg
Если каталоги уже существуют, вы можете упростить это до
prename 's!(...)!$1/$1!' *.jpg
Если ваш дистрибутив не содержит prename
, установите его, например Unicode::Tussle или File::Rename.
find
, вероятно, здесь бесполезна, так как все файлы находятся в одном каталоге. Однако вы можете столкнуться с ошибкой, потому что командная строка слишком длинная. find
— один из способов решить эту проблему; вы можете использовать
find -maxdepth 1 -name '*.jpg' -exec prename 's!(...)!$1/$1!' {} +
В качестве альтернативы запустите zsh вместо bash и воспользуйтесь его функцией zmv
.
autoload zmv # you can put this in ~/.zshrc
mkdir_mv () {
mkdir -p -- $2:h
mv -- $1 $2
}
zmv -p mkdir_mv '(???)*.jpg' '$1/$f'
Если каталоги уже существуют, вы можете использовать просто
zmv '(???)*.jpg' '$1/$f'