Если Вы захотите скопировать содержание папки рекурсивно (то бросит 1 ошибку, альтернативы ниже):
cp -r * sub/
Немного больше hacky, но работы над непустыми подкаталогами:
TARGETDIR='targetdir here';cp -r `find . -maxdepth 1 ! -name "$TARGETDIR"` "$TARGETDIR"
Другая острота:
TARGETDIR='targetdir here';for file in *;do test "$file" != "$TARGETDIR" && cp "$file" "$TARGETDIR/";done
Или рекурсивный:
TARGETDIR='z';for file in *;do test "$file" != "$TARGETDIR" && cp -r "$file" "$TARGETDIR/";done
Предположим, target
название целевого подкаталога, если Ваша оболочка является ударом:
shopt -s extglob
cp -r !(target) target/
В ksh можно непосредственно сделать cp -r !(target) target/
.
В zsh можно сделать setopt ksh_glob
затем cp -r !(target) target/
. Другая возможность setopt extended_glob
затем cp -r ^target target/
.
Я предложил бы переместить целевой каталог вне исходного каталога и затем отложил бы его снова; mv свободен (если Вы боитесь перемещаться в другую файловую систему), если Вы не ожидаете, что другие процессы для вмешиваний / вмешались.
Большинство решений, отправленных выше, не будет работать, если будут пробелы в именах файлов. Я предложил бы использовать варианты находки-print0 | xargs-0 или нашел бы - должностное лицо и т.д.
Это будет работать на Вас?
cp -r * subdir/
Если бы Вы означали перемещаться вместо того, чтобы копировать все в текущем dir к подкаталогу, то Вы могли сделать:
mv * subdir/