我有两个目录,foo和bar。两者都包含相同数量的文件。我希望将foo中的所有文件重命名为与bar中的文件相同。这意味着foo中的第一个文件将被重命名为bar中的第一个文件,foo中的第二个文件被重命名为bar中的第二个文件等。
因此,为了清楚起见,在重命名过程之后“ls / path / to / foo”应该产生与“ls / path / to / bar”相同的输出。当然,foo和bar中所有文件的实际内容都不会改变。
(请注意,所有文件都属于同一类型,有些但不是全部都包含空格。)
提前致谢!
答案 0 :(得分:1)
由于您使用的是bash
,所以秘诀在于谨慎使用数组(和双引号):
x=( /path/to/foo/* )
y=( /path/to/bar/* )
i=0
while [ $i -lt ${#x[@]} ]
do
base="${y[$i]##*/}"
mv "${x[$i]}" /path/to/foo/"$base"
((i++))
done