Другая возможность заключается в том, что в этом каталоге установлен "неизменяемый бит". Вы можете проверить это с помощью ls -d <директории>
. Разрешения, установленные с помощью chattr
, не будут отображаться на выходе stat
:
stephan@x230 ~ % stat testdir
File: ‘testdir’
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 801h/2049d Inode: 13713629 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ stephan) Gid: ( 1000/ stephan)
Access: 2015-08-31 14:05:49.957299346 +0200
Modify: 2015-08-31 14:05:25.657267292 +0200
Change: 2015-08-31 14:05:42.685289494 +0200
Birth: -
stephan@x230 ~ % lsattr -d testdir
----i--------e-- testdir`
Для удаления неизменяемого бита Вы должны быть корнем:
chattr -i testdir
Для этого вам просто нужно добавить дополнительный / в конце *вот так:
mv folder/*.jpg destination (match only jpg files)
mv folder/* destination (match anything found)
mv folder/*/ destination (match only the folders)
Это приведет к перемещению только папок внутри "папки" в место назначения, а не файлов внутри "папки" (обратите внимание, что файлы в подпапках перемещаются ).
Если вложенные папки имеют одинаковые имена, вы можете использовать ответ roaima . Если нет, вы можете использовать простой цикл оболочки:
mkdir -p destination
for name in folder/*; do
[ ! -d "$name" ] && continue
mv "$name" destination
done
Это зациклит все записи каталогов вfolder
(файлах и каталогах ), проверит каждую из них на предмет того, является ли она директорией или нет, и переместит их, если это так.
Другой возможностью является использованиеfind
:
mkdir -p destination
find folder -mindepth 1 -maxdepth 1 -type d -exec mv {} destination ';'
Это позволит найти все пути ко всем каталогам в folder
(, но не ниже, а не к самому каталогу folder
), и переместить каждый найденный каталог в destination
.
В зависимости от фактических имен каталогов вы можете использовать это
mv folder/subfolder* destination/
Если нет шаблона(subfolder*
)для соответствия именам папок, вы можете сделать это
find folder -mindepth 1 -maxdepth 1 -type d -exec mv {} destination/ \;
или даже это
find folder -mindepth 1 -maxdepth 1 -type d -exec mv -t destination/ {} +