我有一个充满文件名和目录名的文件。例子:
DIR,/mnt/sdcard/mydir1/
DIR,/mnt/sdcard/mydir2/
DIR,/mnt/sdcard/mydir3/
FILE,/mnt/sdcard/mydir1/file1.txt
FILE,/mnt/sdcard/mydir2/file1.txt
FILE,/mnt/sdcard/mydir3/file1.txt
共有大约 30.000 个目录和文件名条目。我需要在指定文件夹中创建所有目录、子目录和文件(空的)。而且我还想跳过所有已经存在的目录/文件!
目前我有这个,但我希望有更好的方法,因为这非常慢并且消耗大量 CPU:
#!/bin/bash
cd /home/mydir/dummydir/
for file in *.tree.txt; do
MEMBER=$(echo $file | cut -d '.' -f1)
DIRECTORY=/home/mydir/dummydir/$MEMBER
while read line
do
if [[ $line == FILE,* ]]
then
CUTOFFILE=$(echo "$line" | cut -c 6-)
touch "$DIRECTORY$CUTOFFILE"
else
CUTOFFDIR=$(echo "$line" | cut -c 5-)
if [[ ! -d "$DIRECTORY$line" && $line == DIR,* ]]; then
mkdir -p "$DIRECTORY$CUTOFFDIR"
fi
fi
done < $file
done