Как переименовать все (под) каталоги и файлы в Linux CentOS 7 - PullRequest
0 голосов
/ 07 июня 2019

Как переименовать все (под) каталоги и файлы в Linux CentOS 7? Я попробовал эту команду, но она не сработала:

find Files -depth | xargs -n 1 rename -v ‘s/(.*)\/([^\/]*)/$1\/\L$2/’ {} \;

1 Ответ

0 голосов
/ 07 июня 2019

Первая проблема: вы использовали умные кавычки в операции xargs, то есть команда:

xargs -n 1 rename -v ‘s/(.*)\/([^\/]*)/$1\/\L$2/’ {} \;

никогда не собирался работать. Умные кавычки - недопустимые символы в оболочке. Присутствие {} \;, кажется, указывает на то, что вы заново выполняли find -exec, который в этом случае совершенно не нужен, поэтому xargs можно заменить на:

xargs -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/'

При добавлении -n в целях тестирования он отображает несколько верхних -> нижних переименований файлов в моей файловой системе, поэтому, похоже, сейчас он работает правильно.

Мое предлагаемое переписывание:

find Files -depth -print0 | xargs -0 -n 1 rename -v 's/(.*)\/([^\/]*)/$1\/\L$2/'

Следует выполнить то, что вы пытаетесь, а также попытаться избежать проблем, связанных с файлами с пробелами в них.

без -print0 / -0, если я сделаю:

touch "common/this is EVIL"

тогда операции покажут, что он не будет переименовывать этот файл, тогда как если я использую -print0 / -0, то это покажет:

rename(common/this is EVIL, common/this is evil)
...