假设我有一个像这样的目录结构
Dir1/
SubDir1/
SubDir2/
SubDir3/
我希望能够将“Dir1”传递给 bash 脚本,然后对其所有子目录(SubDir1、SubDir2、SubDir3)执行操作。
感谢您的帮助!
答案1
听起来你要跑步tar
,最好的方法可能是:
basedir=$1
for dir in "$basedir"/*; do
if test -d "$dir"; then
tar -cvf "$dir".tar "$dir"
rm -r "$dir"
fi
done
如果您想使用find
,您应该添加-maxdepth 1
,以避免创建额外的 tar 文件。
basedir=$1
for dir in $(find "$basedir" -mindepth 1 -maxdepth 1 -type d); do
tar -cvf "$dir.tar" "$dir"
rm -r "$dir"
done
还要注意,在中tar -cvf
,输出文件的名称放在第一位(紧接着之后f
)。
答案2
find Dir1 -mindepth 1 -type d -exec dosomethinghere {} \;
答案3
如果您使用 GNU find
,则可以使用-execdir
参数,例如:
find . -type d -depth 1 -execdir echo Action on $(pwd)/{} ';'