mv parentFolder/* parentFolder/..
Будут перемещены все (не -скрытые )файлы, а не только файлы типа каталог .
Для перемещения только каталогов сzsh
(также сокращением кода)
(){mv $1/{*(/),..} && rm -rf $1} parentFolder
Или включить скрытые:
(){mv $1/{*(D/),..} && rm -rf $1} parentFolder
(){..$1..} arg
:анонимная функция с аргументом (для факторизацииparentFolder
){a,b}
csh -раскрытие фигурной скобки, также для разложения на множители (/)
:квалификатор glob для выбора только каталогов. Вы также можете сделать */
(, что также будет работать в bash
, но также будет включать символические ссылки на каталоги ). (D/)
:D
для точечных -файлов (скрытых файлов, имя которых начинается с.
). Если вы используете Bash, вы можете использовать расширение ${var,,}
, чтобы перевести $var
в нижний регистр:
V1=foO V2=Foo
if [[ "${V1,,}" == "${V2,,}" ]]; then
printf '%s\n' "'$V1' and '$V2' are the same in lowercase";
fi
или используйтеnocasematch
:
shopt -s nocasematch
V1=foO V2=Foo
if [[ "$V1" == "$V2" ]]; then
printf '%s\n' "'$V1' and '$V2' are the same apart from case" ;
fi
Хотя я не уверен, что любой из них хорошо работает с буквами, отличными от ASCII. В общем, проблема сравнения верхнего и нижнего регистра и нечувствительного к регистру -сопоставления немного запутана, а также зависит от локали (турецкого с точками и без точек i , что является обычным примером ). Но если все, что у вас есть, это буквы от A до Z без диакритических знаков и локаль, совместимая с английским -, или набор LC_ALL=C
, это должно сработать.
В Zsh и с включенной опцией extendedglob
вы можете использовать (#i)$V2
справа:
setopt extendedglob
V1=foO V2=Foo
if [[ "$V1" == (#i)"$V2" ]]; then
printf '%s\n' "'$V1' and '$V2' are the same apart from case" ;
fi