我有一个文件夹结构的目录如下:
DATA -- ABD 1231345 -- 2012_01_08
-- 2012_03_09
-- 2012_06_11
-- DEF 4859480 -- 2012_02_10
-- 2012_05_10
-- 2012_07_10
我要做的是:
cd DATA
/DATA
中),将重命名所有第一个子文件夹ABD 1231345
到
ABD_1231345
您是否有关于如何在Mac OSX / unix上使用命令行的建议?
答案 0 :(得分:2)
for i in *; do mv "$i" "${i// /_}"; done
请注意,${i//string/repl}
语法是sh的非标准扩展,但您可以使用以下内容进行相同的操作:
for i in *; do j=$( echo "$i" | tr ' ' _); mv "$i" "$j"; done
答案 1 :(得分:0)
当前目录包含:
aa 111
bb 222
aaa.txt
aaa 1111.txt
bbb 2222.txt
<强>输出:强>
aa_111
bb_222
aaa.txt
aaa 1111.txt
bbb 2222.txt
<强>代码:强>
ls -ltr|awk -F" " '{print $9,$10}'|sed 's/ $//g'|grep -v "^$">abc
while read line
do
val=`echo $line`
echo $line|grep " ">/dev/null
rc=$?
if [[ -d "$val" && $rc -eq 0 ]]
then
replace=`echo $line|sed 's/ /_/g'`
mv "$val" "$replace"
fi
done<abc
rm -f abc
这里,上面的脚本只在当前目录中重命名文件夹。你可以跳过grep部分(它的效率)。