Linux 给定路径正在更改为“路径”/&引用;
我有一个脚本,它在给定目录(Linux 给定路径正在更改为“路径”/&引用;,linux,bash,Linux,Bash,我有一个脚本,它在给定目录(/new)中查找旧文件,并将它们压缩到另一个目录(/old): 当文件位于$NEW\u DIR中时,这将按预期工作-早于$FILE\u RETENTION的文件将压缩到$OLD\u DIR中 但是,当文件位于子目录下时,如$NEW\u DIR/ABC,$NEW\u DIR/DEF,它们不会压缩到$OLD\u DIR,而是压缩到仅带有文件名的“/” 我不明白为什么$dest\u base会变为“/”,而它被静态分配为dest\u base=${OLD\u DIR} 此外
/new
)中查找旧文件,并将它们压缩到另一个目录(/old
):
当文件位于$NEW\u DIR
中时,这将按预期工作-早于$FILE\u RETENTION
的文件将压缩到$OLD\u DIR
中
但是,当文件位于子目录下时,如$NEW\u DIR/ABC,$NEW\u DIR/DEF
,它们不会压缩到$OLD\u DIR
,而是压缩到仅带有文件名的“/”
我不明白为什么$dest\u base
会变为“/”,而它被静态分配为dest\u base=${OLD\u DIR}
此外,“find
”命令使用其绝对路径定位子目录中的所有文件
我希望$NEW\u DIR
中的所有文件将压缩到$OLD\u DIR
,子目录中的文件压缩到$OLD\u DIR/subdirname/$dest
我的错在哪里
请解释。这些是导致问题的原因:
source_base=`dirname $1`
[[ "$source_base" == "${NEW_DIR}" ]] && dest_base=${OLD_DIR}
由于
dirname new/ABC/file
输出new/ABC
,source\u base
不等于new\u DIR
,因此dest\u base
保持未设置,并且${dest\u base}/${f\u name}.zip
扩展为/file.zip,基于@oguzismail
source_base=$(dirname "$1" | cut -f 1-2 -d "/")
很有意义。。。用尽可能通用的方式实现预期目标的最佳方法是什么?我的意思是,我不想分配多个变量。这无关紧要,因为“旧”目录每隔一段时间就会被旋转一次。按照目前的方法,“新”目录和子目录中的所有文件都被压缩到“旧”目录中,而不排序到目录,然后被删除。另请参见,(U&L.SE),(SO),(AskU)等。
source_base=$(dirname "$1" | cut -f 1-2 -d "/")