svn status --no-ignore | grep '^[I?]' | cut -c 9- | while IFS= read -r f; do rm -rf "$f"; done
इसकी निम्न विशेषताएं हैं:
- नजरअंदाज और अनटैक की गई दोनों फाइलें हटा दी जाती हैं
- यह तब भी काम करता है, जब किसी फ़ाइल नाम में व्हॉट्सएप हो (न्यूलाइन को छोड़कर, लेकिन बहुत कुछ ऐसा नहीं है जो
--xml
विकल्प का उपयोग करने के अलावा हो सकता है और परिणामस्वरूप xml आउटपुट को पार्स कर सकता है )
- यह
svn status
फ़ाइल नाम से पहले अन्य स्थिति वर्णों को प्रिंट करने पर भी काम करता है (जो कि ऐसा नहीं होना चाहिए क्योंकि फाइलें ट्रैक नहीं की जाती हैं, लेकिन सिर्फ मामले में ...)
- यह किसी भी POSIX- अनुरूप प्रणाली पर काम करना चाहिए
मैं एक शेल स्क्रिप्ट का उपयोग करता हूं जिसका नाम svnclean
निम्नलिखित है:
#!/bin/sh
# make sure this script exits with a non-zero return value if the
# current directory is not in a svn working directory
svn info >/dev/null || exit 1
svn status --no-ignore | grep '^[I?]' | cut -c 9- |
# setting IFS to the empty string ensures that any leading or
# trailing whitespace is not trimmed from the filename
while IFS= read -r f; do
# tell the user which file is being deleted. use printf
# instead of echo because different implementations of echo do
# different things if the arguments begin with hyphens or
# contain backslashes; the behavior of printf is consistent
printf '%s\n' "Deleting ${f}..."
# if rm -rf can't delete the file, something is wrong so bail
rm -rf "${f}" || exit 1
done