假设我有一个目录结构,如
Dir1/
SubDir1/
SubDir2/
SubDir3/
Run Code Online (Sandbox Code Playgroud)
我希望能够将“Dir1”传递给 bash 脚本,然后对它的所有子目录(SubDir1、SubDir2、SubDir3)执行操作。
谢谢你的帮助!
鉴于听起来您要跑步tar
,最好的方法可能是:
basedir=$1
for dir in "$basedir"/*; do
if test -d "$dir"; then
tar -cvf "$dir".tar "$dir"
rm -r "$dir"
fi
done
Run Code Online (Sandbox Code Playgroud)
如果您想使用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
Run Code Online (Sandbox Code Playgroud)
另请注意,在 中tar -cvf
,输出文件的名称排在第一位(紧跟在 之后f
)。