# take a read-only snapshot: btrfs sub snap -r fs snapshot ... do things on fs # rolling back: btrfs sub del fs # at which point you'll lose those things you've done # if you want to preserve them, just rename fs instead btrfs sub snap snapshot fs # reinstate snapshot as a read+write fs btrfs sub del snapshot # delete the non-longer needed read-only snapshot
Просто объедините два теста с &&
:
if [[ -L "$file" && -d "$file" ]]
then
echo "$file is a symlink to a directory"
fi
Решение с find
и использование функции:
dosomething () {
echo "doing something with $1";
}
find -L -path './*' -prune -type d| while read file; do
if [[ -L "$file" && -d "$file" ]];
then dosomething "$file";
fi;
done
Вот одна команда, которая рекурсивно перечислит симлинки, целью которых является каталог (начиная с текущего каталога):
find . -type l -xtype d
Ссылка: http://www.commandlinefu. com/commands/view/6105/find-all-symlinks-that-link-to-directories
shopt -s dotglob
– rubo77 29.05.2014, 19:04[[
, и я взял это в качестве логической начальной точки. Обсуждение достоинств[
по сравнению с[[
вне объема для этого ответа (но доступен здесь). – 30.05.2015, 04:56